1. 程式人生 > >A + B Problem II(高精度計算)

A + B Problem II(高精度計算)

#include<stdio.h>
#include<string.h>
main()
{
    int n;
    int i,ka,kb,j=1,k,x;
    char a1[1000],b1[1000];
    scanf("%d",&n);
    getchar();
    x=n;
    while(n--)
    {
        int a[1000]={0},b[1000]={0},c[1000]={0};
        scanf("%s%s",a1,b1);
        //gets(a1);
        //gets(b1);
        ka=strlen(a1);
        kb=strlen(b1);
        k=(ka>kb?ka:kb);
        for(i=0;i<ka;i++)
            a[i]=a1[ka-i-1]-'0';
        for(i=0;i<kb;i++)
            b[i]=b1[kb-i-1]-'0';
        for(i=0;i<k;i++)
        {
            c[i]=a[i]+b[i]+c[i];
            c[i+1]=c[i+1]+c[i]/10;
            c[i]=c[i]%10;
        }
        printf("Case %d:\n%s + %s = ",j,a1,b1);    
        j++;
        if(c[k])k++;
        for(i=k-1;i>=0;i--)
            printf("%d",c[i]);
        printf("\n");
        if(j<x+1)
            printf("\n");
    }
    
}
#include<stdio.h>
#include"string.h"
#define max 1000+10
char a[max],b[max];
int main()
{       int  i,j,T,k;
        scanf("%d",&T);
       for(k=0;k<T;k++)
          {   int A[max]={0},B[max]={0};
              scanf("%s%s",a,b);
            int x=strlen(a);
            int y=strlen(b);
            for(i=0;i<x;i++)A[i]=a[x-1-i]-'0';
            for(i=0;i<y;i++)B[i]=b[y-1-i]-'0';
            int c=0;
            for(i=0;i<max;i++)
             {  int s=(A[i]+B[i]+c);
                A[i]=s%10;
                c=s/10;
             }
            printf("Case %d:\n%s + %s = ",k+1,a,b);
            for( i=max-1;i>=0;i--) if(A[i])break;
           for(j=i;j>=0;j--)      printf("%d",A[j]);
           printf("\n");
            if(k<T-1)
               printf("\n");
         }
     return 0;
}