zoukankan      html  css  js  c++  java
  • (TOJ1249)四数相加

    描述

    给你4个自然数,请你将这四个数相加。

    输入

    输入数据有多组,第一行为测试数据的组数n,下面有n行,每行有4个自然数,每个数最多不超过2008位。

    输出

    输出4个数相加的结果。

    样例输入

    2
    0 1 2 3
    1000000 1000000 1000000 1000000

    样例输出

    6
    4000000

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<ctype.h>
     5 
     6 char a[2013],b[2013],c[2013],d[2013],L[2013];
     7 
     8 void solve()
     9 {
    10     int n,len,i,j,t,flag;
    11     int len1,len2,len3,len4;
    12     char *p,*q,*r,*s,*l;
    13     scanf("%d",&n);
    14     while(n--){
    15         scanf("%s",a);scanf("%s",b);scanf("%s",c);scanf("%s",d);
    16         len1=strlen(a);len2=strlen(b);len3=strlen(c);len4=strlen(d);
    17         p=strrev(a);q=strrev(b);r=strrev(c);s=strrev(d);
    18         i=t=flag=0;
    19         while(*p||*q||*r||*s){
    20             if(*p!='\0')  t+=*p-'0';
    21             if(*q!='\0')  t+=*q-'0';
    22             if(*r!='\0')  t+=*r-'0';
    23             if(*s!='\0')  t+=*s-'0';
    24             t+=flag;
    25             L[i++]=t%10+'0';
    26             flag=t/10;
    27             p++;q++;r++;s++;
    28             t=0;
    29             }
    30         if(flag) L[i]=flag+'0';
    31         len=strlen(L);
    32         l=strrev(L);
    33         printf("%s\n",l);
    34         memset(a,'\0',len1*sizeof(char));
    35         memset(b,'\0',len2*sizeof(char));
    36         memset(c,'\0',len3*sizeof(char));
    37         memset(d,'\0',len4*sizeof(char));
    38         memset(L,'\0',len*sizeof(char));
    39     }
    40 }
    41 
    42 int main()
    43 {
    44     solve();
    45     return 0;
    46 }
    
    
     下面的代码,不用strrev()函数,同样可以AC
     1 #include<stdio.h>
     2 #include<string.h>
     3 char a[2009],b[2009],c[2009],d[2009],L[2011];
     4 void solve()
     5 {
     6     int n,len,i,j,t,flag;
     7     int len1,len2,len3,len4;
     8     char *p,*q,*r,*s,*l;
     9     scanf("%d",&n);
    10     while(n--){
    11         scanf("%s",a);scanf("%s",b);scanf("%s",c);scanf("%s",d);
    12         len1=strlen(a);len2=strlen(b);len3=strlen(c);len4=strlen(d);
    13         p=a+len1-1;q=b+len2-1;r=c+len3-1;s=d+len4-1;
    14         i=t=flag=0;
    15         while(p>=a||q>=b||r>=c||s>=d){
    16             if(p>=a)  t+=*p-'0'; 
    17             if(q>=b)  t+=*q-'0'; 
    18             if(r>=c)  t+=*r-'0';
    19             if(s>=d)  t+=*s-'0';
    20             t+=flag;
    21             L[i++]=t%10+'0';
    22             flag=t/10;
    23             p--;q--;r--;s--;
    24             t=0;
    25             }
    26         if(flag) L[i]=flag+'0';
    27         len=strlen(L);   l=strrev(L);
    28         printf("%s\n",l);
    29         memset(a,'\0',len1*sizeof(char));
    30         memset(b,'\0',len2*sizeof(char));
    31         memset(c,'\0',len3*sizeof(char));
    32         memset(d,'\0',len4*sizeof(char));
    33         memset(L,'\0',len*sizeof(char));
    34     }
    35 }
    36 int main()
    37 {
    38     solve();
    39     return 0;
    40 }
    
    
    作者:xueda120
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    使用字符流(Writer、Reader)完成对文件的读写操作
    Java中File类重修
    适配器模式学习
    oracle 新建数据库 ,新建用户
    8.19 extjs jar 包使用。
    8.15 session 有效时间, session在数据查询中最后不用
    8.15 自定义tr行 滚动 信息行的滚动
    8.15jsp document 头部声明 区别
    8.14 图片滚动无缝
    8.13Oracle新建用户、角色,授权
  • 原文地址:https://www.cnblogs.com/xueda120/p/3084095.html
Copyright © 2011-2022 走看看