本文主要是介绍Primary Arithmetic【北京大学】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
查看原题目请点我这里
解题思路:这道题应该算是大数加法,只是换了种说法而已,主要注意两个细节,字符串需要先反转后再从个位开算,另外两个字符不一定相同长度,需要补充成一样长。
#include<cstdio>
#include<cstring>
int cnt;
void add(char s[],char t[]){int c=0;int len1=strlen(s);int len2=strlen(t);int len=len1>len2?len1:len2;for(int i=0;i<len;i++){int A=i<len1?s[i]-'0':0;int B=i<len2?t[i]-'0':0;c=(A+B+c)/10;if(c==1) cnt++;}
}
void reverse(char s[]){int len=strlen(s);for(int i=0;i<len/2;i++){int tmp=s[i];s[i]=s[len-1-i];s[len-1-i]=tmp;}
}
int main(){char str1[15],str2[15];while(scanf("%s%s",str1,str2)!=EOF){if(str1[0]=='0'&&str2[0]=='0') break;cnt=0;reverse(str1);reverse(str2);add(str1,str2);if(cnt==0)printf("No carry operation.\n");else if(cnt==1)printf("1 carry operation.\n");else printf("%d carry operations.\n",cnt);}return 0;
}
这篇关于Primary Arithmetic【北京大学】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!