【数论】HDOJ 1013
2012-11-22 16:21
134 查看
题目大意:
一个正整数,如果各位上的数字之和为一位数,则这个一位数便是这个正整数的数字根,如果和为两位或者是多为数,则继续求各位数字的和,知道求得数字根为止。
第一次求解出现WR 原因发现是超出范围,第二次改成string 类型 发现超时,我晕,第三回看见讨论区中的代码,发现高手真实太多了。
但随之产生一问题,(先求各位的总和,然后判断处理) (逐次加上下一位的数字,然后判断处理)这两种方法竟然结果一样,思前想后终于想通了,就像你拿钱去兑换一样,第一种是先攒着等到一块去换,一种是只要超过一定数就去换,结果是一样的。
一个正整数,如果各位上的数字之和为一位数,则这个一位数便是这个正整数的数字根,如果和为两位或者是多为数,则继续求各位数字的和,知道求得数字根为止。
第一次求解出现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; }
相关文章推荐
- HDOJ 1576 A/B(数论整除)
- HDOJ 1013 Digital Roots(大数)
- HDOJ 1013 Digital Roots
- HDOJ-4002/(大连网赛1002)- Find the maximum 数论
- 数论二(hdoj 卡特兰数)
- hdu 1013 Digital Roots(数论 模拟)
- HDOJ 1013题Digital Roots 大数,9余数定理
- hdoj1013
- [数论]HDOJ 1222 Wolf and Rabbit 欧几里得算法
- hdoj 1124 Factorial (第一次接触数论)
- HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
- HDOJ 2674-N!Again【数论】
- hdoj-4790-Just Random【数论】
- 【数论】 HDOJ 4986 Little Pony and Alohomora Part I
- hdoj-5120-Intersection【数论】
- HDOJ/HDU 3864 多校联合 D_num 数论
- 20140930 【 数论 -- 本福特定律 】 2014-上海区域赛-网络预选赛 hdoj 5051 Fraction
- HDOJ-4002/(大连网赛1002)- Find the maximum 数论
- HDOJ 1013 Digital Roots
- hdoj 1021||nbut 1013 Fibonacci Again (规律)