#include<iostream>
#include<cstdio>
#include<string>
#include<string.h>
using namespace std;
string operator +(string &a,string &b)
{
int i;
int sum[2001]={0};
int len1=a.length();
int len2=b.length();
for(i=0;i<len1;i++)
sum[i]+=a[len1-i-1]-'0';
for(i=0;i<len2;i++)
sum[i]+=b[len2-i-1]-'0';
int max=len1>len2?len1:len2;
for(i=0;i<max;i++)
{
if(sum[i]>9)
{
sum[i+1]+=sum[i]/10;
sum[i]%=10;
if(i==max-1)
max++;
}
}
string tmp="";
for(i=max-1;i>=0;i--)
tmp+=(sum[i]+'0');
return tmp;
}
int main()
{
string a,b;
int ca,i=1;
scanf("%d",&ca);
while(ca--)
{
cin>>a>>b;
string c=a+b;
cout<<"Case "<<i++<<":"<<endl;
cout<<a<<" "<<"+"<<" "<<b<<" "<<"="<<" "<<c<<endl;
if(ca) cout<<endl;
}
return 0;
}
另一种求和的大数:
hdu1250
#include<stdio.h>
#include<string.h>
const int mod=10000;
int a[7500][700];
//低位---------》》高位
//a[i][j] j:1------->>>N
void fun()
{
a[1][1]=a[2][1]=1;
a[3][1]=a[4][1]=1;
int i,j,tmp=0;
for(i=5;i<7500;i++)
for(j=1,tmp=0;j<700;j++)
{
tmp+=a[i-1][j]+a[i-2][j]+a[i-3][j]+a[i-4][j];
a[i][j]=tmp%mod;
tmp/=mod;
}
return ;
}
int main()
{
fun();
int n,i;
while(~scanf("%d",&n))
{
i=699;
while(a[n][i]==0) i--;
printf("%d",a[n][i--]);
for(;i>0;i--)
printf("%04d",a[n][i]);
printf("\n");
}
return 0;
}