POJ1519数字根 问题

来源:互联网 发布:mac的桌面文件在哪里 编辑:程序博客网 时间:2024/06/02 20:03
一个正整数的数字根是指该数字各位数字之和,如果和是一个个位数,那么这个数字就是它的数字根,如果和是个两位或多于两位的数字,那么就继续求和直到得到个位数。<br />例如:数字24,把2和4相加,得到6,那么6就是24的数字根;又比如数字39,把数字3和9相加,得到12,因为12时是两位数,所以继续把1和2相加,得到3,于是3就是39的数字根
#include<iostream>using namespace std;int temp;int function(int num){while (num!=0){temp +=num%10;num /=10;}if (temp>=10){num=temp;temp=0;function(num);}return temp;}int main(int argc,char *argv[]){int num;while (cin>>num){temp=0;temp=function(num);cout<<temp<<endl;}return 0;}


如果数字有2000位的话,可以用字符的形式来表示:

#include<iostream>using namespace std;int temp;char num[2001];int function(int num){while (num!=0){temp +=num%10;num /=10;}if (temp>=10){num=temp;temp=0;function(num);}return temp;}int main(int argc,char *argv[]){int length,i,j;while (cin>>num&&num[0]!='0'){temp=0;i=0;length=strlen(num);while (i<length){temp =function(num[i]-'0');i++;}cout<<temp<<endl;}return 0;}


 

原创粉丝点击