HDU_1002(大数相加)
2015-04-26 09:24 HaodongGUO 阅读(106) 评论(0) 收藏 举报HDU-problem 1002
发个链接: http://acm.hdu.edu.cn/showproblem.php?pid=1002
1 #include<stdio.h> 2 #include<string.h> 3 4 int n,m1,m2,i,j,d,k,s; 5 char CA[1000],CB[1000]; 6 int IA[1001]; 7 8 int main() 9 { 10 scanf("%d",&n); 11 s=1; 12 while (n--) 13 { 14 scanf("%s%s",CA,CB); 15 m1=strlen(CA); 16 m2=strlen(CB); 17 //第一步 18 d=0; 19 for(i=m1-1,j=m2-1,k=0;i>=0&&j>=0;i--,j--,k++) 20 { 21 d=CA[i]-'0'+CB[j]-'0'+d; 22 IA[k]=d%10; 23 d=d/10; 24 } 25 //第二步 26 if(k==m1)//CA[]如果比较完成 27 { 28 while(j>=0)//但是CB[]还没有比较完成 29 { 30 d=CB[j]-'0'+d; 31 IA[k]=d%10; 32 d=d/10; 33 k++; 34 j--; 35 } 36 } 37 else//ca[]还没有 比较完成 38 { 39 while(i>=0) 40 { 41 d=CA[i]-'0'+d; 42 IA[k]=d%10; 43 d=d/10; 44 k++; 45 i--; 46 } 47 } 48 //第三步 49 if(d!=0) 50 { 51 IA[k]=d; 52 k++; 53 } 54 //输出 55 printf("Case %d:\n",s); 56 printf("%s + %s = ",CA,CB); 57 for (i=k-1;i>=0;i--) 58 printf("%d",IA[i]); 59 printf("\n"); 60 if(n>=1) 61 printf("\n"); 62 s++; 63 64 } 65 66 return 0; 67 }
ps: 由于自己是菜鸟,这三个步骤一开始自己也想不到,看了别人写的代码才知道大数的计算,
ps:如果有写错的地方,请指正
浙公网安备 33010602011771号