HDU 1013 Digital Roots【字符串,水】

简介: Digital Roots Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 79339    Accepted Submission(s)...

Digital Roots

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 79339    Accepted Submission(s): 24800


Problem 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.
 

 

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
24
39
0
 

 

Sample Output
6
3
 

 

Source
分析:很智障的题,我当时一直在想这怎么处理数字问题,没考虑这输入数字无限大的问题,sb啊,直接字符串从低到高位搞一下就好了,每一位处理即可!
下面给出AC代码:
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int main()
 4 {
 5     string str;
 6     while(cin>>str&&str!="0")
 7     {
 8         int num=0;
 9         for(int i=0;i<str.length();i++)
10         {
11             num+=str[i]-'0';
12             if(num>9)
13                 num=num/10+num%10;
14         }
15         cout<<num<<endl;
16     }
17     return 0;
18 }

 

目录
相关文章
|
6月前
|
人工智能 算法 BI
D - Silver Cow Party——POJ3268(连续用两次Dijkstra算法)
D - Silver Cow Party——POJ3268(连续用两次Dijkstra算法)
|
C++
【PAT甲级 - C++题解】1005 Spell It Right
【PAT甲级 - C++题解】1005 Spell It Right
64 0
|
SQL Shell
HDU-4348 To the moon(主席树区间修改 永久化标记)
HDU-4348 To the moon(主席树区间修改 永久化标记)
146 0
HDU-4348 To the moon(主席树区间修改 永久化标记)
[ICPC 46th Shanghai] Life is a Game 克鲁斯卡尔重构树
题目大意: 给定n个点,m条边,有q个询问 每个点有一个(能量值)点权,每条边有一个边权 m条边描述为u v w表示有一条u与v相连的边权为w的通路 在每一次询问中,给定一个点x和现有的能量值k,每次只能是在当前能量值大于边权的时候到达另一个点,并获取这个点的能量值(路可以重复走),问最终能够获得多大的能量值
134 0
|
人工智能
[CCPC] 2017秦皇岛H Prime Set | 二分图最大匹配 [据说是个金牌题]
题意: 给出n个数,如果两数之和a i + a j a_i+a_ja i ​ +a j ​ (i ≠ j i \neq ji  ​ =j)为素数,那么这两个数的下标组成的集合{ i , j } {\{i,j}\}{i,j} 问最多挑选k个这样的集合,集合最大的大小是多少 思路: 将给出的n个数进行暴力两两求和,看两数之和是否为素数,将能够构成素数的两个数的下标连一条边 开始将match数组标记为− 1 -1−1,如果能够构成素数,那么将这个数标记为0 00 然后进行二分图最大匹配,如果说匹配的个数 ≥ k \ge k≥k 那么答案就是k ∗ 2 k*2k∗2
148 0
|
机器学习/深度学习
HDOJ 1163 Eddy's digital Roots(九余数定理的应用)
HDOJ 1163 Eddy's digital Roots(九余数定理的应用)
108 0
|
机器学习/深度学习