• hdu 1002 A + B Problem II 大整数相加


    第二次写这道题了...依然写得磕磕绊绊的....好多冗余代码....简直要被格式逼疯了T_T....

    关于进位问题的解决方法之一是倒着读入数组....以前写的时候用的是数组前空一位,最后判断下前导0

    还有就是字符型读入整形数组要减去‘0’.......还要注意格式......

    自己的挫代码......

      1 #include<stdio.h>
      2 #include<string.h> 
      3 #define MAX 1010
      4 int main()
      5 {
      6     int n,t=1;
      7     scanf("%d",&n);
      8     while(t<=n)
      9     {
     10         char s1[MAX],s2[MAX];
     11         int a[MAX],b[MAX],sum[MAX];
     12         int i,j,l1,l2,mins;
     13         scanf("%s%s",&s1,&s2);
     14         l1=strlen(s1);
     15         l2=strlen(s2);
     16         mins=l1<l2?l1:l2;
     17         memset(a,0,sizeof(a));
     18         memset(b,0,sizeof(b));
     19         for(i=l1-1,j=0;i>=0;i--)
     20         {
     21             a[j++]=s1[i]-'0';
     22         }
     23         for(i=l2-1,j=0;i>=0;i--)
     24         {
     25             b[j++]=s2[i]-'0';
     26         }
     27         memset(sum,0,sizeof(sum));
     28         for(i=0;i<mins;i++)
     29         {
     30             sum[i]=sum[i]+a[i]+b[i];
     31             if(sum[i]>9)
     32             {
     33                  sum[i]-=10;
     34                  sum[i+1]++;
     35              }
     36         }
     37         if(l1==l2)
     38         {
     39             if(sum[mins]==0)
     40             {
     41                 printf("Case %d:
    ",t++);
     42                 printf("%s + %s = ",s1,s2);
     43             for(i=mins-1;i>=0;i--)
     44             printf("%d",sum[i]);
     45             if(t!=n+1)
     46             printf("
    
    ");
     47             else
     48             printf("
    ");
     49             }
     50             else
     51             {
     52                 printf("Case %d:
    ",t++);
     53                 printf("%s + %s = ",s1,s2);
     54             for(i=mins;i>=0;i--)
     55             printf("%d",sum[i]);
     56             if(t!=n+1)
     57             printf("
    
    ");
     58             else
     59             printf("
    ");
     60             }
     61            
     62         }
     63         if(l1>l2)
     64         {
     65             for(i=mins;i<=l1;i++)
     66             {
     67               sum[i]+=a[i];
     68               if(sum[i]>9)
     69             {
     70                  sum[i]-=10;
     71                  sum[i+1]++;
     72              }
     73             }
     74             if(sum[l1]!=0)
     75             {
     76                 printf("Case %d:
    ",t++);
     77                 printf("%s + %s = ",s1,s2);
     78             for(i=l1;i>=0;i--)
     79             printf("%d",sum[i]) ;
     80             if(t!=n+1)
     81             printf("
    
    ");
     82             else
     83             printf("
    ");
     84             }
     85             else
     86             {
     87                 printf("Case %d:
    ",t++);
     88                 printf("%s + %s = ",s1,s2);
     89              for(i=l1-1;i>=0;i--)
     90             printf("%d",sum[i]) ;
     91             if(t!=n+1)
     92             printf("
    
    ");
     93             else
     94             printf("
    ");
     95             }
     96         }
     97         if(l2>l1)
     98         {
     99             for(i=mins;i<=l2;i++)
    100             {
    101               sum[i]+=b[i];
    102               if(sum[i]>9)
    103             {
    104                  sum[i]-=10;
    105                  sum[i+1]++;
    106              }
    107             }
    108             if(sum[l2]!=0)
    109             {
    110                 printf("Case %d:
    ",t++);
    111                 printf("%s + %s = ",s1,s2);
    112             for(i=l2;i>=0;i--)
    113             printf("%d",sum[i]) ;
    114         if(t!=n+1)
    115             printf("
    
    ");
    116             else
    117             printf("
    ");
    118             }
    119             else
    120             {
    121                 printf("Case %d:
    ",t++);
    122                 printf("%s + %s = ",s1,s2);
    123             for(i=l2-1;i>=0;i--)
    124             printf("%d",sum[i]) ;
    125             if(t!=n+1)
    126             printf("
    
    ");
    127             else
    128             printf("
    ");
    129             }
    130         }
    131     }
    132 }

    大神的代码....完全一样的思路,人家代码就写得这么简洁,整整少了三分之二呀!!!!T_T........

     1 #include<iostream>
     2 #include<cstring>
     3 
     4 using namespace std;
     5 
     6 int s1[1005],s2[1005],ans[1005];
     7 
     8 int main(){
     9     int t;
    10     char str1[1005],str2[1005];
    11     cin>>t;
    12     int cases=0;
    13     while(t--){
    14         cin>>str1>>str2;
    15         if(cases)
    16             cout<<endl;
    17         int i,j;
    18         int len1=strlen(str1),len2=strlen(str2);
    19         memset(s1,0,sizeof(s1));
    20         memset(s2,0,sizeof(s2));
    21         memset(ans,0,sizeof(ans));
    22         int si=0,sj=0;
    23         for(i=len1-1;i>=0;i--)
    24             s1[si++]=str1[i]-'0';
    25         for(j=len2-1;j>=0;j--)
    26             s2[sj++]=str2[j]-'0';
    27 
    28         for(i=0;i<1005;i++){
    29             ans[i]+=s1[i]+s2[i];
    30             if(ans[i]>=10){
    31                 ans[i+1]+=ans[i]/10;
    32                 ans[i]%=10;
    33             }
    34         }
    35         for(j=1004;j>=0;j--)
    36             if(ans[j]!=0)
    37                 break;
    38         cout<<"Case "<<++cases<<":"<<endl;
    39         if(j==-1){
    40             cout<<"0 + 0 = 0"<<endl;
    41             continue;
    42         }
    43         cout<<str1<<" + "<<str2<<" = ";
    44         for(i=j;i>=0;i--)
    45             cout<<ans[i];
    46         cout<<endl;
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    phpinfo mac 和 php -moudle里的不一致(mongodb篇)
    0、服务启动前之日志字段和格式
    P3740 贴海报
    树状数组区间修改and查询和
    P1823 Patrik 音乐会的等待
    西安段素扫描线
    P1903 数颜色
    P1220 关路灯
    [p1559] 运动员最佳匹配问题
    treap数组版
  • 原文地址:https://www.cnblogs.com/xurenwen/p/3881578.html
Copyright © 2020-2023  润新知