这个题目很简单,但是很容易WA。是因为题目里给的数字大小可能超过unsigned int.
所以要用字符串。
这是最重要的部分了。下面是代码,很简单。
//
// main.cpp
// DigitalRoot_hdu1013
//
// Created by Alps on 14/12/25.
// Copyright (c) 2014年 chen. All rights reserved.
//
#include <iostream>
using namespace std;
int root(int ac){
int ans = 0;
while (ac) {
ans += ac%10;
ac /= 10;
}
return ans < 0 ? -ans:ans;
}
int main(int argc, const char * argv[]) {
char s[1000];
int ac = 0;
while (1) {
memset(s, '0', 1000*sizeof(char));
scanf("%s", s);
for (int i = 0; s[i] != '\0'; i++) {
ac += (int)(s[i] - '0');
if (ac >= 10) {
ac = root(ac);
}
}
if (0 == ac) {
break;
}
printf("%d\n",ac);
ac = 0;
}
return 0;
}