思路一:输入整数,计算位数之和,然后若大于10则循环计算。
结果:wrong answer,看了网上分析,应该是要适应非常大数的计算,所以应该用string来存储输入的数。
思路二:用string存储输入的数,同时发现,最后的结果是原始数各位数之和sum,(sum-1)%9+1,原来是个数论的题(当然也可以仿照思路一,循环计算)
结果:坑之处在于我的编译器和oj的编译器版本有出入,结果死活compilation error,发现应该是用不了c++的string类,而应该用字符数组。然后基本就成了c语言代码,顺利AC(完全不顺利啊喂)
附代码
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
int main(){
char a[1001];
while(scanf("%s",a)&&a[0]!='0'){
int sum = 0;
for(int i=0;i<strlen(a);i++){
sum += a[i]-'0';
}
cout<<(sum-1)%9+1<<endl;
}
}