题目描述:

实现一个加法器,使其能够输出a+b的值。

输入:

输入包括两个数a和b,其中a和b的位数不超过1000位。

输出:

可能有多组测试数据,对于每组数据,输出a+b的值

样例输入:

2 6

1000000000000000000000 10000000000000000000000000000000000000000000

样例输出:

8

100000000000000000000000000000000000000000000

#include <iostream>
#include<string.h>
#include<cstdio>
using namespace std; struct bigInteger{
int digit[];//按四位数一个单位保存数值
int size;//下一个我们未使用的数组单元 void init(){//初始化
for(int i=;i<;i++)
digit[i] = ;
size = ;
} void set(char str[]){//从字符串中提取整数
init();
int L = strlen(str);//计算字符串长度
for(int i=L-,j=,t=,c=;i>=;i--){
/**从最后一个字符开始倒序遍历字符串,
j控制每4个字符转换成一个数字存入数组,
t临时保存字符转换位数字的中间值,
c表示当前位的权重,按1,10,100,1000顺序变化
*/
t += (str[i]-'')*c;//计算这个四位数中当前字符代表的数字,即数字乘以当前位权重
j++;//当前转换字符数增加
c *= ;//计算下一位权重
if(j == || i == ){//若已经连续转换四个字符,或者已经达到最后一个字符
digit[size++] = t;//这四个字符代表的四位数存入数组,size移动到下一个数组单元
j=;
t=;
c=;
}
}
} void output(){//将该高精度整数输出
for(int i=size-;i>=;i--){
if(i!=size-)
printf("%04d",digit[i]);//即当前输出的数字不是最高位数字,用%04的输出前导0,即当前数字不足4位时由0补充
else
printf("%d",digit[i]);//若是最高位,则无需输出前导0
}
printf("\n");
} bigInteger operator + (const bigInteger &A) const {//加法运算符
bigInteger ret;//返回两数相加的结果
ret.init();
int carry = ;//进位,初始值为0
for(int i=;i<A.size || i<size;i++){
int temp = A.digit[i]+digit[i]+carry;//计算两个整数当前位以及来自低位的进位和
carry = temp/;//计算该位的进位
temp %= ;//去除进位部分,取后四位
ret.digit[ret.size++] = temp;//保存该位结果
}
if(carry != ){//计算结束后若最高位有进位
ret.digit[ret.size++]=carry;//保存该进位
}
return ret;
}
}a,b,c; char str1[],str2[];
int main()
{
scanf("%s %s",str1,str2);
a.set(str1);//两个字符串分别设置两个高精度整数
b.set(str2);
c = a+b;
c.output();//输出
return ;
}

对于c和c++,要使用结构体保存一个高精度整数:

struct bigInteger{
int digit[];//按四位数一个单位保存数值
int size;//下一个我们未使用的数组单元
};

最新文章

  1. ubuntu 16 安装django nginx uWSGI
  2. mkdir命令
  3. Spring AOP基本概念
  4. windowsphone 的IsolatedStorageSettings存储类型
  5. H5危险的文件上传对话框
  6. Windows内核之进程的终止和子进程
  7. symfony2-不同bundle的entity的一对多关系
  8. 浙江大学PAT上机题解析之3-04. 一元多项式的乘法与加法运算
  9. Spring4 JDBC详解
  10. mysql基础知识点
  11. 高效并发unsafe-星耀
  12. JAVA面向对象之继承
  13. 代码合并工具Beyond Compare的使用技巧
  14. Saiku更改源代码实现默认查询一天的数据(十)
  15. 40.SEO----前端该懂的seo技巧
  16. Makefile shell subst $(1)
  17. 【Selenium-WebDriver自学】Selenium测试设计技术(十三)
  18. Bootstrap(6)辅组类和响应式工具
  19. 【error】segmentation fault分析
  20. SPSS学习系列之SPSS Statistics的使用介绍

热门文章

  1. JAVA Eclipse 教程
  2. 白话TCP三次握手
  3. python数据类型-----列表
  4. 如何在qt中使用中文输入法
  5. Interface与abstract类的区别
  6. Docker背后的内核知识:命名空间资源隔离---亲测
  7. Lookup 组件用法全解
  8. 洛谷——P1287 盒子与球
  9. POJ1325Machine Schedule(匈牙利算法)
  10. Column 1 of table &#39;xxx&#39; cannot be converted from type &#39;varchar(33)&#39; to type &#39;varchar(11)&#39;