poj 2562 Primary Arithmetic
這道題太陰險了。。居然還有單複數。。。
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;
//轉a
for(i=0;i<strlen(a);i++)
aInt[strlen(a)-1-i]=a[i]-48;
//轉b
for(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;
//init
count=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");
else
printf("%d carry operations.\n",count);
}
return 0;
}
最後更新:2017-04-03 05:40:03