这个程序在oj上是WA,求大神解答

题目描述:

数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根。如果结果是两位数或者包括更多位的数字,那么再把这些数字加起来。如此进行下去,直到得到是一位数为止。

比如,对于24来说,把2和4相加得到6,由于6是一位数,因此6是24的数根。再比如39,把3和9加起来得到12,由于12不是一位数,因此还得把1和2加起来,最后得到3,这是一个一位数,因此3是39的数根。
输入
一个正整数(小于101000)。
输出
一个数字,即输入数字的数根。
样例输入
24
样例输出
6
来源
翻译自 Greater New York 2000 的试题
#include<iostream>
#include<stdlib.h>
using namespace std;
int num1[1010],num2[1010];
//把整数存入数组,num从0到length是整数的每个数字从后往前读的
int cunrushuzu(int m,int num[]){
int length=0;
while(m!=0){
num[length]=m%10;
m/=10;
length++;
}
return length;
}
int main(){
num1[1010]={0};
num2[1010]={0};
int n,sum=0;
cin>>n;
int len1,len2;
len1=cunrushuzu(n,num1);
// for(int k=0;k<len1;k++)
// cout<<num1[k]<<" ";
// cout<<endl;
// cout<<len1<<endl;
if(len1>=2){
for(int i=0;i<len1;i++)
sum+=num1[i];

// cout<<sum<<endl;
len2=cunrushuzu(sum,num2);
while(len2>=2){
num2[1010]={0};
sum=0;
for(int j=0;j<len2;j++)
sum+=num2[j];
len2=cunrushuzu(sum,num2);
}
cout<<sum<<endl;
}
else
cout<<n<<endl;
return 0;
}
...全文
30 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-07-31
  • 打赏
  • 举报
回复
printf("%d\n", (num % 9 == 0) ? 9 : num % 9);

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧