hdoj 1013

扫码查看

比较坑的一道题。。。直接做肯定WA

http://acm.hdu.edu.cn/showproblem.php?pid=1013

 #include<iostream>
#include<cstring>
using namespace std;
int main(){
char a[];
while(cin>>a){
int len = strlen(a);
long long n =;
for(int i=;i<len;i++){
n += a[i]-'';
}
if(n==)
break;
while(){
int sum = ;
while(n ){
sum += n%;
n = n/;
}
if(sum>)//这个地方设置得比较巧妙,直接判断是不是小于9即可。。。。。。我当初使用。。。。下边附。。。
n = sum;
else{
cout<<sum<<endl;
break;
}
}
}
  return 0;
}

首先下边这样做WA 但是方法远远比上边的麻烦。。。。

 #include <iostream>

 using namespace std;
bool issingle(int n){
if(n/==)
return true;
return false;
}
int getroot(int n){
int sum = ;
while(n){
sum+=n%;
n = n/;
}
return sum;
}
int main()
{
int n;
while(cin>>n&&n){
while(!issingle(n)){
int ss = getroot(n);
if(issingle(ss)){
cout<<ss<<endl;
break;
}
n = ss;
} }
return ;
}
04-03 02:23
查看更多