心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
题目大意:计算两个数相加时需要多少次进位。
简单的高精度计算。
以下是我的代码:
#include<stdio.h>
#include
<string.h>
int main()
{
    
/*
    freopen("data.in","r",stdin);
    freopen("data.out","w",stdout);
    //
*/
    
const long maxn=17;
    
const char end[]="0";
    
char sa[maxn],sb[maxn];
    
while(scanf("%s%s",sa,sb)==2)
    {
       
if(strcmp(sa,end)==0&&strcmp(sb,end)==0break;
       
long lena=strlen(sa),lenb=strlen(sb),lenc,ans;
       
long a[maxn],b[maxn],c[maxn];
       lenc
=(lena>lenb?lena:lenb);
       memset(a,
0,sizeof(a));
       memset(b,
0,sizeof(b));
       memset(c,
0,sizeof(c));
       
for(long i=0;i<lena;i++) a[i]=sa[lena-i-1]-'0';
       
for(long i=0;i<lenb;i++) b[i]=sb[lenb-i-1]-'0';
       ans
=0;
       
for(long i=0;i<lenc;i++)
       {
          c[i]
+=a[i]+b[i];
          
if(c[i]>=10)
          {
             c[i]
-=10;
             c[i
+1]++;
             ans
++;
          }
       }
       
if(ans==0)
         printf(
"No carry operation.\n");
       
else if(ans==1)
         printf(
"1 carry operation.\n");
       
else printf("%ld carry operations.\n",ans);
    }
return 0;
}


posted on 2010-01-22 13:43 lee1r 阅读(426) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:数学/数论

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理