【swust.oj_0415】Digital Roots
2017-05-18 12:43
246 查看
Digital Roots
The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two o r more digits, those digits are summed and the process
is repeated. This is continued as long as necessary to obtain a single digit.
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process
must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
-----------------------------
The input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer value of zero.
For each integer in the input, output its digital root on a separate line of the output.
24
39
0
-----------------------------
6
3
tips:
1.这个题,提交要用gcc;
2.在求循环根的时候要写成函数调用的形式,不然会超时;
3.不能cin,cout,会超时;
#include <stdio.h>
#include <string.h>
int mod(int sum)
{
int x=0;
while(sum)
{
x+=sum%10;
sum/=10;
}
return x;
}
int main()
{
char num[2000];
while(scanf("%s",num)!=EOF && num[0]!='0')
{
int len=strlen(num);
if(len==1)
{
printf("%c\n",num[0]);
}
else
{
int sum=0,i;
for(i=0;i<len;i++)
{
sum+=num[i]-'0';
}
while(sum>=10)
{
sum=mod(sum);
}
printf("%d\n",sum);
}
}
return 0;
}
The digital root of a positive integer is found by summing the digits of the integer. If the resulting value is a single digit then that digit is the digital root. If the resulting value contains two o r more digits, those digits are summed and the process
is repeated. This is continued as long as necessary to obtain a single digit.
For example, consider the positive integer 24. Adding the 2 and the 4 yields a value of 6. Since 6 is a single digit, 6 is the digital root of 24. Now consider the positive integer 39. Adding the 3 and the 9 yields 12. Since 12 is not a single digit, the process
must be repeated. Adding the 1 and the 2 yeilds 3, a single digit and also the digital root of 39.
-----------------------------
The input file will contain a list of positive integers, one per line. The end of the input will be indicated by an integer value of zero.
For each integer in the input, output its digital root on a separate line of the output.
24
39
0
-----------------------------
6
3
tips:
1.这个题,提交要用gcc;
2.在求循环根的时候要写成函数调用的形式,不然会超时;
3.不能cin,cout,会超时;
#include <stdio.h>
#include <string.h>
int mod(int sum)
{
int x=0;
while(sum)
{
x+=sum%10;
sum/=10;
}
return x;
}
int main()
{
char num[2000];
while(scanf("%s",num)!=EOF && num[0]!='0')
{
int len=strlen(num);
if(len==1)
{
printf("%c\n",num[0]);
}
else
{
int sum=0,i;
for(i=0;i<len;i++)
{
sum+=num[i]-'0';
}
while(sum>=10)
{
sum=mod(sum);
}
printf("%d\n",sum);
}
}
return 0;
}
相关文章推荐
- 【题解】-航电OJ1013 Digital Roots
- hdu-oj 1013 Digital Roots
- swust.oj.1075
- 杭电oj(Java版)——1013 Digital Roots
- swustoj求最小生成树(Prim算法)(1075)
- [Swust OJ 763]--校门外的树 Plus(暴力枚举)
- [Swust OJ 352]--合并果子(贪心+队列模拟)
- [Swust OJ 643]--行列式的计算(上三角行列式变换)
- [Swust OJ 799]--Superprime Rib(DFS)
- [Swust OJ 632]--集合运算(set容器)
- [Swust OJ 385]--自动写诗
- swustoj(0541)
- Delete Numbers(swust oj 0700)
- swustoj表达式转换(0309)
- swustoj dearway's problem(0240)
- 【杭电oj】1013 - Digital Roots(数论 - 九余定理,好题)
- 线段树离线 SWUST OJ 2459 Submissions of online judge
- 九度OJ 1124:Digital Roots(数根) (递归)
- SWUST OJ数据结构输出格式
- C语言BFS(5)___TT与魔法师(swust oj 2464)