ACWing 3596. a+b

📅 发布时间:2026/7/3 23:45:15 👁️ 浏览次数:
ACWing 3596. a+b
实现一个加法器使其能够输出 ab 的值。输入格式输入包含多组测试数据。每组数据占一行包含两个正整数 a,b,。输出格式每组数据输出一行答案表示 ab 的值。数据范围每个输入最多包含 100100 组数据。a,b, 最多不超过 10001000 位。输入样例2 6 10000000000000000000 10000000000000000000000000000000输出样例8 10000000000010000000000000000000#includeiostream#includebits/stdc.husing namespace std;int main(){ char a[1001],b[1001];int al[1001],bl[1001];int cl[1001];//存放结果while(cinab)//输入后[0]索引存放的是最高位的值需要逆序存储{//逆序存储先int alenstrlen(a);int blenstrlen(b);//strlen并不会计算\0位int clen0;for(int i0;i1000;i){cl[i]0;al[i]0;bl[i]0;}for(int i0;ialen;i){al[alen-i-1]a[i]-0;}for(int i0;iblen;i){bl[blen-i-1]b[i]-0;}//现在al和bl都从0到1000存放着输入的从个位到千位数字int cll0;for(;cllalen||cllblen;cll)//只要还有一个数组没遍历完就继续遍历{if(al[cll]bl[cll]cl[cll]10)//无进位cl[cll]al[cll]bl[cll]cl[cll];else {cl[cll]al[cll]bl[cll]-10cl[cll];//有进位则进位并本位-10cl[cll1];}}//现在cll是最高位1位了if(cl[cll]0)//最高位没有进位cll--;for(;cll0;cll--)coutcl[cll];coutendl;}}顺便一提这题虽然两个输入都是1000位以内的但是最终结果存在1001位的情况所以需要将cl初始化到1000位索引的位置而char数组是否初始化到1000位实际上不影响因为其只用1000个空间即999号索引。有人说 字符串应该预留出来一个位置存储\0。是的当输入数据的时候我们采用的是字符串方式输入 cina此时我们需要多预留一个位置来存储\0。但是当输入完成后如果我们后续不需要再用字符串相关方法如strlenstrcpy等方法对其进行操作我们可以将最后一个位置的\0也初始化掉将其看为一个字符数组就可以