您的位置:首页 > 其它

【数论】HDOJ 1013

2012-11-22 16:21 134 查看
题目大意:

一个正整数,如果各位上的数字之和为一位数,则这个一位数便是这个正整数的数字根,如果和为两位或者是多为数,则继续求各位数字的和,知道求得数字根为止。

第一次求解出现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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: