题目大意:
一个正整数,如果各位上的数字之和为一位数,则这个一位数便是这个正整数的数字根,如果和为两位或者是多为数,则继续求各位数字的和,知道求得数字根为止。
第一次求解出现WR 原因发现是超出范围,第二次改成string 类型 发现超时,我晕,第三回看见讨论区中的代码,发现高手真实太多了。
但随之产生一问题,(先求各位的总和,然后判断处理) (逐次加上下一位的数字,然后判断处理)这两种方法竟然结果一样,思前想后终于想通了,就像你拿钱去兑换一样,第一种是先攒着等到一块去换,一种是只要超过一定数就去换,结果是一样的。
#include <iostream>
using namespace std;
int main(){
char c=' ';
int a=0;
int sum=0;
int temp=0;
while(1){
c=getchar();
if(c=='\n'){
if(sum==0)break;
cout<<sum<<endl;
sum=0;
continue;
}
a=c-48;
sum+=a;
if(sum>=10){
sum=sum%10+sum/10;
}
if(a<0 || a>9)
break;
}
return 0;
}