HDU1002 Sum Problem

来源:互联网 发布:论文数据捏造 编辑:程序博客网 时间:2024/05/01 06:01

大数加法。

#include <cstdio>#include <cstring>using namespace std;const int MAX=1001;void big_add(char a[],char b[],char c[]){    int i,e=0,d;    int len1=strlen(a);    int len2=strlen(b);    for(i=0;i<len1/2;i++)    {        char t=a[i];a[i]=a[len1-1-i];a[len1-1-i]=t;    }                //本题可以把这个字符串倒叙做成一个函数,减少代码量,后面用的比较多,我比较懒,,直接复制粘贴了,,,    for(i=0;i<len2/2;i++)    {        char t=b[i];b[i]=b[len2-1-i];b[len2-1-i]=t;    }    for(i=0;i<len1&&i<len2;i++)    {        d=a[i]-'0'+b[i]-'0'+e;        c[i]=d%10+'0';        e=d/10;    }    if(i<len1)      for(;i<len1;i++)      {          d=a[i]-'0'+e;          c[i]=d%10+'0';          e=d/10;      }    else      for(;i<len2;i++)      {          d=b[i]-'0'+e;          c[i]=d%10+'0';          e=d/10;      }    if(e) c[i++]=e+'0';    c[i]=0;    int len3=i;    for(i=0;i<len3/2;i++)    {        char t=c[i];c[i]=c[len3-1-i];c[len3-1-i]=t;    }     for(i=0;i<len1/2;i++)    {        char t=a[i];a[i]=a[len1-1-i];a[len1-1-i]=t;    }    for(i=0;i<len2/2;i++)    {        char t=b[i];b[i]=b[len2-1-i];b[len2-1-i]=t;    }}int main(){    char a[MAX],b[MAX],c[MAX];    int t,T=0;    while(scanf("%d",&t)!=-1)      while(t--)      {          T++;          scanf("%s%s",a,b);          big_add(a,b,c);          printf("Case %d:\n%s + %s = %s\n",T,a,b,c);          if(t>0) printf("\n");   //本题的“Output a blank line between two test cases.”不包括最后一组数据后面的空格.这地方PE了好多次...      }    return 0;}

0 0
原创粉丝点击