大数加法

来源:互联网 发布:淘宝店铺打理 编辑:程序博客网 时间:2024/06/05 19:35
既然开头的题目是A+B那我们也用A+B来结尾咯。只不过这个加法高级一点

Input

输入数据有多组
输入A,B两个非常大的数(A和B的长度都不超过1000)
如果A的真值为0退出

Output

输出A+B的结果,输出格式如Sample output所示。PS:记住每两个答案之间空一行。

Sample Input

1 2112233445566778899 9988776655443322110

Sample Output

Case 1:3Case 2:1111111111111111110
!!!注意:0001+1=2,不是0002。
#include<stdio.h>#include<string.h>int main(){   int x,y,i,max,cur=1;   char a[1002],b[1002];   while(scanf("%s",&a))   {    x=strlen(a);    if(x==1&&a[0]=='0')     break;    scanf("%s",&b);    y=strlen(b);   max=x>y?x:y;    int n[1002]={0},m[1002]={0};    int sum[1005]={0};    for(i=0;i<x;i++)      n[i]=a[x-i-1]-'0';    for(i=0;i<y;i++)     m[i]=b[y-i-1]-'0';    for(i=0;i<max;i++)     sum[i]=n[i]+m[i];    for(i=0;i<max;i++)     {     if(sum[i]>9)      {      if(i==max-1)       max++;      sum[i]=sum[i]-10;      sum[i+1]++;      }     }     if(cur-1>0)      printf("\n");      printf("Case %d:\n",cur);      int v=0;     for(i=max-1;i>=0;i--)     {       if(sum[i]!=0||v==1)       {        printf("%d",sum[i]);        v=1;       }     }      printf("\n");     cur++;     memset(a,0,sizeof(char)*1002);     memset(b,0,sizeof(char)*1002);  } return 0;}
原创粉丝点击