#include<iostream> #include<stdio.h> #include<stdlib.h> #include<math.h> #include<string.h> #include<algorithm> #include<map> #include<vector> #include<queue> using namespace std; struct bign { int d[1000]; int len; bign(){ //构造函数,初始化结构体 memset(d,0, sizeof(d)); len=0; } }; bign change(char str[]){ //将整数转换成bign bign a; a.len=strlen(str); for( int i=0;i<a.len ; i++) { a.d[i]=str[a.len-i-1] - '0'; } return a; } bign add(bign a,bign b){ //高精度a+b bign c; int carry=0; //carry是进位 for(int i=0;i<a.len || i<b.len;i++){ //以较长的为界限 int temp=a.d[i]+b.d[i]+carry; //两个对应位与进位相加 c.d[c.len++]=temp% 10; //个位数为该位结果 carry=temp /10; //十位数为新的进位 } if(carry !=0){ //如果最后进位不为0,则直接赋给结果的最高位 c.d[c.len++]=carry; } return c; } void print(bign a){ //输出bign for(int i=a.len-1; i>=0;i--){ printf("%d",a.d[i]); } } int main(){ char str1[1000],str2[1000]; scanf("%s%s",str1,str2); bign a=change(str1); bign b=change(str2); print(add(a,b)); system("pause"); return 0; }