题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002
知识点:带符号32位int类型整为-2147483648~2147483647
long long的最大值:9223372036854775807
long long的最小值:-9223372036854775808
Presentation Error:输出格式错误。
注意最后一个例子不需要回车!!!
#include <bits/stdc++.h>
using namespace std;
//大整数结构体
struct bign{
int len;
int d[1000];
//初始化
bign(){
memset(d,0,sizeof(d));
len = 0;
}
};
//转换为bign
bign change(char str[]){
bign a;
a.len = strlen(str);
for(int i=0;i<a.len;i++){
a.d[i] = str[a.len-1-i] - '0';//逆序
}
return a;
}
bign add(bign a,bign b){
bign c;
int carry = 0;//进位
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){
c.d[c.len++] = carry;
}
return c;
}
//逆序输出
void print(bign a){
for(int i = a.len -1;i>=0;i--){
cout<<a.d[i];
}
}
int main(){
int tcase;
cin>>tcase;
for(int i=1;i<=tcase;i++)
{
char A[1000],B[1000];//字符串存储
cin>>A>>B;
bign a = change(A);
bign b = change(B);
cout<<"Case "<<i<<":"<<endl;
cout<<A<<" + "<<B<<" = ";
print(add(a,b));
cout<<endl;
//注意格式!!!
//最后一个例子无回车了
if(i!=tcase)
cout<<endl;
}
return 0;
}