题目:http://icpc.njust.edu.cn/Problem/CF/102B/
AC代码(C++):
#include <iostream>
#include <queue>
#include <vector>
#include <set>
#include <string>
#include <algorithm>
#include <string.h>
#include <math.h>
#define INF 0x3f3f3f3f
#define eps 1e-8
typedef unsigned long long ull;
typedef long long ll;
typedef __int64 i64d;
using namespace std;
void add(char* str, int d) {
int i = 0;
int len = strlen(str);
while (i < len) {
str[i] -= '0';
str[i] += d;
d = str[i] / 10;
if (d == 0) {
str[i] += '0';
break;
}
else {
str[i] %= 10;
str[i] += '0';
}
i++;
}
bool out = false;
while (d) {
out = true;
str[i] = d % 10 + '0';
d /= 10;
i++;
}
if(out)str[i] = '\0';
}
char str[100005];
char tmp[100005];
int main() {
while (cin >> str) {
reverse(str, str + strlen(str));
int ans = 0;
tmp[0] = '0';
tmp[1] = '\0';
while (strlen(str) != 1) {
int len = strlen(str);
for (int i = 0; i < len; i++)
add(tmp, str[i] - '0');
strcpy(str, tmp);
tmp[0] = '0';
tmp[1] = '\0';
ans++;
}
cout << ans << endl;
}
//system("pause");
}
总结: 模拟题, 硬干.