当前位置: 首页 > news >正文

UVa 424 Integer Inquiry

题目描述

题目要求计算多个大整数的和。输入包含最多100100100行,每行一个非负整数(可能非常大,长度不超过100100100位),以单独一行的一个000表示输入结束。输出这些整数的总和。

输入格式

输入包含若干行,每行一个由数字组成的字符串,表示一个非负整数。最后一行是一个单独的000,表示输入结束。

输出格式

输出一行,即所有输入整数的和。

样例

输入

123456789012345678901234567890 123456789012345678901234567890 123456789012345678901234567890 0

输出

370370367037037036703703703670

题目分析

本题的核心是实现大整数加法。由于每个整数最多有100100100位,直接使用内置整数类型(如long long最多约191919位)无法存储,需要手动模拟竖式加法过程。

加法模拟

大整数加法从最低位(个位)开始逐位相加,并处理进位。具体步骤:

  1. 将两个加数按字符串形式存储,从末位向首位遍历。
  2. 对应位相加,加上上一位的进位,得到当前位的和。
  3. 当前位的数字为和模101010,进位为和除以101010
  4. 处理完所有位后,若仍有进位,则在最高位添加进位。

多整数求和

对于多个大整数相加,可以依次将每个数累加到一个结果变量中。结果变量也以字符串(或整数数组)形式存储,初始为000。每读入一个新数,将其与当前结果相加,更新结果。

实现细节

  • 使用vector<int>string存储结果,注意低位在数组前端还是后端的选择。常见做法是低位存储在索引000处,这样进位扩展时只需在末尾追加。
  • 参考代码中使用了固定长度的字符数组result(长度为110110110),从末尾开始向前存储,这样可以避免反转字符串。但需要注意输出时跳过前导零。

边界情况

  • 输入可能只有一个000,此时应输出000
  • 输入的数字可能包含前导零(如00123),但通常输入不会这样。如有前导零,加法结果应正确处理。

复杂度分析

每加一个数的时间复杂度为O(max⁡(len(result),len(num)))O(\max(\text{len}(\text{result}), \text{len}(\text{num})))O(max(len(result),len(num))),总复杂度O(总数×最大长度)O(\text{总数} \times \text{最大长度})O(总数×最大长度),完全可接受。

代码实现

// Integer Inquiry// UVa ID: 424// Verdict: Accepted// Submission Date: 2016-07-13// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char*argv[]){ios::sync_with_stdio(false);string line,result=string(110,0);while(getline(cin,line),line!="0"){intdigit=0,carry=0;intj=result.length()-1;for(inti=line.length()-1;i>=0;i--,j--){digit=line[i]-'0'+result[j]+carry;result[j]=digit%10;carry=digit/10;}while(j>=0){digit=result[j]+carry;result[j]=digit%10;carry=digit/10;j--;}}for(inti=0;i<result.length();i++){if(result[i]==0)continue;for(intj=i;j<result.length();j++)cout<<(char)(result[j]+'0');break;}cout<<endl;return0;}
http://www.rkmt.cn/news/1486145.html

相关文章:

  • 长春发动机维修优选:本地门店测评与避坑全指南 - 百航
  • 红河哈尼族彝族自治州2026年黄金回收白银回收铂金回收 5 家高性价比门店实地测评盘点 - 三大殿
  • 如何免费解锁Wand专业版功能:开源增强工具终极指南
  • 不止于编译:用VS2019的类设计器可视化剖析ZLToolKit的模块架构
  • 手把手教你用STM32CubeIDE实现PMSM的EKF无感FOC(附代码避坑点)
  • 2026最新教程:PDF怎么另存为JPG?WPS、电脑自带工具、微信小程序3种方法详解 - 软件小管家
  • 在树莓派上利用NXP EdgeLock SE05x实现硬件级安全与TPM 2.0功能
  • FPGA异步FIFO设计避坑指南:为什么你的跨时钟域同步总出问题?
  • 红河哈尼族彝族自治州2026年本地黄金回收铂金白银回收哪家强?TOP5 正规门店榜单 +联系方式 - 三大殿
  • 告别龟速拷贝!用FastCopy命令行实现局域网文件秒传(附远程复制脚本)
  • WarcraftHelper:魔兽争霸3终极优化工具完整指南
  • 当‘懒散少年’遇上AI:从一篇英语课文看教育危机与技术平权的未来
  • 邯郸市2026年黄金回收白银回收铂金回收 5 家高性价比门店实地测评盘点 - 干豆腐啊
  • SAP FI配置避坑指南:OBC4定义字段状态变式时,这3个细节新手最容易出错
  • 2026大连钻石回收行业深度解析!看懂市场规则轻松高价变现 - 薛定谔的梨花猫
  • 葫芦岛市2026年本地黄金回收铂金白银回收哪家强?TOP5 正规门店榜单 +联系方式 - 三大殿
  • RAG本质是贝叶斯推理:从概率公式到可部署代码
  • 避开这个坑!在64位Win10上用VS2019为CANoe 11创建DLL的正确姿势
  • 别再傻傻分不清了!用RS-232串口通信实例,一次搞懂波特率与比特率的区别
  • COMSOL中用Wellpoint布井策略模拟页岩气水平井压裂裂缝扩展与渗流响应
  • 别再手动巡检了!用Zabbix 5.0 + SNMPv2自动监控华为S系列交换机(附完整命令集)
  • 2026手把手教你Excel转TXT,附另存为文本格式完整步骤 - 软件小管家
  • 煤矿皮带巡检专用YOLOv8图像数据集:30张实拍图,含煤块与传送带双目标标注
  • 北京品牌首饰回收优选攻略,多年口碑老店实测,出价公道流程清晰 - 薛定谔的梨花猫
  • app测试|工作中常用的adb命令集
  • 如何用Umi-OCR实现高效离线文字识别:Windows/Linux终极指南
  • 超声波泥水界面仪产品介绍:高频探头与信号处理技术 - 仪表人叶工
  • 高考完这三个月,AI入门最该做的5件事(深度版)
  • 电赛B题AC-DC深度解析:如何用三相PFC电路把功率因数做到0.99以上?
  • 太原启睿再生资源:晋源厂房拆除公司怎么联系 - LYL仔仔