这题嘛,不用多说,难度不大,唯一要注意的,也是ACM经常耍的花招:1000以内的单次输入量。也就是说,它可能输入1000 个数字字符,直观点举例,就是:
8947129387523745194375983274597435792834527345297349594375972345414132413577230
诸如此类。
所以必须用字符串来解决。
/* THE PROGRAM IS MADE BY PYY */ /*---------------------------------------------------------- http://acm.hdu.edu.cn/showproblem.php?pid=1013 Digital Roots Begin : 15:30 End : 15:57 ----------------------------------------------------------*/ #include <iostream> using namespace std; int main() { int sum, tmp, i; char c; while (cin >> c && c != '0') { sum = c - '0'; while (cin.get(c) && c != '/n') { sum += c - '0'; } tmp = sum; sum = 0; while (tmp) { sum += tmp % 10; tmp /= 10; if (!tmp && sum > 9) { tmp = sum; sum = 0; } } cout << sum << endl; } return 0; }
------------------------------------------原题如下 ---------------------------------------------
Digital Roots
Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 19048Accepted Submission(s): 5487
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
本文介绍了一个ACM竞赛题目“数字根求解”的解决方案,通过字符串处理实现对输入的大整数进行数字根计算,并附带了完整的C++代码实现。
293

被折叠的 条评论
为什么被折叠?



