一道acm水题做得和尼玛一坨屎一样,真尼玛去shi算求了!!
开始一直忽略了一个问题,这尼玛N可以是无限大的啊!!
第一遍:打算用stl来做加个递归,shi一样的代码。报错:Runtime Error (STACK_OVERFLOW)
#include <cstdio> #include <iostream> #include <string> #include <string.h> using namespace std; int digital (const string &); const int MAX_N = 1000000; int main () { int N; char buf[MAX_N]; memset(buf, 0, MAX_N); while (cin >> N && N != 0) { sprintf (buf, "%d", N); string digits(buf); digital (digits); } return 0; } int digital (const string &digits) { string str = digits; int sum = 0; char buf[MAX_N]; memset (buf, 0, MAX_N); for (int i = 0; i < str.size(); i++) { sum += str[i] - '0'; } if (sum / 10 == 0) { cout << sum << endl; return 0; } else { sprintf (buf, "%d", sum); string word(buf); digital(word); } }
#include <cstdio> #include <iostream> using namespace std; int digital ( int ); int main () { int N; while (cin >> N && N != 0) { digital (N); } return 0; } int digital ( int N) { int sum = 0, n = 0; if (N / 10 == 0) { cout << N << endl; return 0; } else { while (N > 0) { n = N % 10; sum += n; N = N / 10; } digital (sum); } }
#include <iostream> using namespace std; int main () { string digit; while (cin >> digit) { int sum = 0; for (int i = 0; i < digit.size(); i++) { sum += digit[i] - '0'; if (sum > 9) sum = sum / 10 + sum % 10; } if (sum == 0) break; cout << sum << endl; } return 0; }