Digital Roots

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

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

交了七次才对。题意就是求数根,求法就是将数字每一位相加,若和为两位以上,继续相加,直至只有一位。若只有一位数,数根就是本身。否则重复求直到加出来的数只有一位。

此外引用一个九余数定理:

一个数对九取余后的结果称为九余数。

一个数的各位数字之和想加后得到的<10的数字称为这个数的九余数(如果相加结果大于9,则继续各位相加)

代码:

#include<iostream>
#include<string>
#include<sstream>
using namespace std;
int jisuan(const string &str)
{ int sum=0;
if(str.size()==1)
return sum=str[0]-'0';
for (int i=0; i<str.size(); i++)
{
sum=sum+(str[i]-'0')%9;//各位相加的和取模9,等于各位取模9后的和
}
return sum;
}
int main(void)
{
int n;
string str;
int num;
while (cin>>str&&str!="0")
{
num=jisuan(str);
while (num>=10)
{
string t;
ostringstream oin;
oin<<num;
t=oin.str();
num=jisuan(t);
}
if(num%9==0)//一直WA因为只判断了9而没有判断它的倍数
cout<<9<<endl;
else
cout<<num<<endl;
}
return 0;
}

最新文章

  1. php内核分析(八)-zend_compile
  2. Leetcode 详解(Substing without repeats character)
  3. C# 进程和线程
  4. 【Win10 UWP】URI Scheme(二):自定义协议的处理和适用场景
  5. LeetCode &quot;Integer Break&quot;
  6. n0_n1
  7. datawindow.net数据窗口卡片设置滚动条位置
  8. 20160421javaweb之上传下载小案例---网盘
  9. Jedi项目,还真得好好看看,有许多控件和新封装的API(Delphi里面没有)
  10. Josephus问题的java实现
  11. git clone操作到开发机的错误记录
  12. iOS开发-OC数据类型
  13. Pod install 之后 no such module
  14. JSP+Servlet+mysql简单示例【图文教程】
  15. window 系统显示svg、psd格式文件
  16. 怎样从外网访问内网IIS?
  17. JavaWeb应用项目中文乱码的解决
  18. javaScript年份下拉列表框内容为当前年份及前后50年
  19. ASP.NET Core 2 学习笔记
  20. PHP生产二维码

热门文章

  1. Array - Merge Sorted Array
  2. 项目中遇到的bug
  3. fastjson中转字符串时格式化、显示null值等
  4. java HashMap 内存泄漏
  5. 将一个double类型的小数,按照四舍五入保留两位小数.
  6. CVE-2011-0065
  7. IOS使用Jenkins进行持续集成
  8. Create &amp; use FTP service on Ubuntu(在Ubuntu上搭建并使用FTP服务)
  9. MyBatis的mapper.xml文件的参数问题:org.apache.ibatis.builder.IncompleteElementException: Could not find parameter map
  10. centos安装并配置MySQL