当前位置: 代码迷 >> 综合 >> poj 2562 Primary Arithmetic
  详细解决方案

poj 2562 Primary Arithmetic

热度:89   发布时间:2024-01-11 16:36:00.0

这道题太阴险了。。居然还有单复数。。。

1的时候和多个的时候不一样。。。。。。。


题意:给你两个数,问如果有两个数用笔算相加,有多少次进位。

 

思路:简单模拟。但情况要考虑全,而且注意单复数的输出形式不同。可能WA的数据有:

      0 5

      999999 8

      901 99


#include <stdio.h>
#include <string.h>char a[15],b[15];
int aInt[15],bInt[15];void inverse()
{int i;//转afor(i=0;i<strlen(a);i++)aInt[strlen(a)-1-i]=a[i]-48;//转bfor(i=0;i<strlen(b);i++)bInt[strlen(b)-1-i]=b[i]-48;//test/*for(i=0;i<strlen(a);i++)printf("%d ",aInt[i]);printf("\n");for(i=0;i<strlen(b);i++)printf("%d ",bInt[i]);printf("\n");*/
}int main()
{int i;int count;while(scanf("%s%s",&a,&b)){if(strcmp(a,"0")==0 && strcmp(b,"0")==0)break;//initcount=0;memset(aInt,0,sizeof(aInt));memset(bInt,0,sizeof(bInt));//将a[],b[]中的数转为int型,且低位在1位inverse();for(i=0;i<=strlen(a) || i<=strlen(b);i++)if(aInt[i]+bInt[i]>=10){count++;aInt[i+1]++;}if(count==0)printf("No carry operation.\n");else if(count==1)printf("1 carry operation.\n");elseprintf("%d carry operations.\n",count);}return 0;
}




  相关解决方案