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