现在的位置: 首页 > 综合 > 正文

大数相加,两个大数。

2013年04月11日 ⁄ 综合 ⁄ 共 1421字 ⁄ 字号 评论关闭

// Problem#: 7498
// Submission#: 1921005
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include<stdio.h>
#include<string.h>

int main(){
char a[200],b[200];
while(scanf("%s %s",a,b)!=EOF){
int lofa,lofb;
lofa=strlen(a);
lofb=strlen(b);
char atemp[lofa+2],btemp[lofb+2];
int i;
for(i=lofa;i>0;i--){
atemp[i]=a[i-1];
}
atemp[i]='0';
for(i=lofb;i>0;i--){
btemp[i]=b[i-1];
}
btemp[i]='0';
int temp;
if(lofa>=lofb){
i=0;
while(i<lofb){
temp=btemp[lofb-i]+atemp[lofa-i]-48-48;
if(temp>=10){
atemp[lofa-i]=temp-10+48;
atemp[lofa-i-1]=atemp[lofa-i-1]+1;
}
else{
atemp[lofa-i]=temp+48;
}
i++;
}
temp=atemp[lofa-i]-48;
while(i<lofa  && temp>=10){
atemp[lofa-i]=temp-10+48;
atemp[lofa-i-1]=atemp[lofa-i-1]+1;
i++;
temp=atemp[lofa-i]-48;
}
i=0;
while(atemp[i]=='0'){
i++;
}
if(i==lofa+1){
printf("0\n");
}
else{
for(;i<lofa;i++){
printf("%c",atemp[i]);
}
printf("%c\n",atemp[i]);
}
}
else{
i=0;
while(i<lofa){
temp=btemp[lofb-i]+atemp[lofa-i]-48-48;
if(temp>=10){
btemp[lofb-i]=temp-10+48;
btemp[lofb-i-1]=btemp[lofb-i-1]+1;
}
else{
btemp[lofb-i]=temp+48;
}
i++;
}
temp=btemp[lofb-i]-48;
while(i<lofb  && temp>=10){
btemp[lofb-i]=temp-10+48;
btemp[lofb-i-1]=btemp[lofb-i-1]+1;
i++;
temp=btemp[lofb-i]-48;
}
if(btemp[0]!='0'){
printf("%s\n",btemp);
}
else{
for(i=1;i<lofb;i++){
printf("%c",btemp[i]);
}
printf("%c\n",btemp[i]);
}
}
}
return 0;
}                                               

抱歉!评论已关闭.