Digital Roots
来源:互联网 发布:知乎app ios7 下载 编辑:程序博客网 时间:2024/05/01 21:35
Time Limit: 1000MS
Memory Limit: 10000KTotal Submissions: 21712
Accepted: 7137
Memory Limit: 10000KTotal Submissions: 21712
Accepted: 7137
Description
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 or 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.
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.
Input
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.
Output
For each integer in the input, output its digital root on a separate line of the output.
Sample Input
24390
Sample Output
63
Source
Greater New York 2000
需要用到一点小技巧,否则超时
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char s[1001];
int len;
int yu;
int sum;
int num;
while(scanf("%s",s)!=EOF)
{
if(strcmp(s,"0")==0)
break;
sum=0;
len=strlen(s);
for(int i=0;i<len;i++)
{
sum+=s[i]-'0';
}
while(sum>9)
{
sum=sum/10+sum%10;//关键
}
printf("%d\n",sum);
}
return 0;
}
需要用到一点小技巧,否则超时
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char s[1001];
int len;
int yu;
int sum;
int num;
while(scanf("%s",s)!=EOF)
{
if(strcmp(s,"0")==0)
break;
sum=0;
len=strlen(s);
for(int i=0;i<len;i++)
{
sum+=s[i]-'0';
}
while(sum>9)
{
sum=sum/10+sum%10;//关键
}
printf("%d\n",sum);
}
return 0;
}
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Digital Roots
- Oracle SQL Trace 和 10046 事件 .
- 删除Ubuntu旧内核的几种方法
- 【以前的日志】Flex 组件控件加载顺序心得
- windows下修改apache并发数
- Oracle创建触发器
- Digital Roots
- 二叉树中两个子节点的最近公共节点
- 网站建站教程 | HTML教程 | CSS教程 | JavaScript教程
- QString -> char *
- iOS 从图片截取图片,类似Window bitblt
- python+apache的服务器搭建问题
- 普通人的编辑利器——Vim
- linux 下 java 安装 环境变量设置
- cannot restore segment prot after reloc: Permission denied