上海月赛 数根

Posted zjylzf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上海月赛 数根相关的知识,希望对你有一定的参考价值。

 给定一个十进制下的正整数 n,若 n 的各位数字之和是一位数,则这个和是 n 的数根。例如,999 的数根为 9,因为 9+9+9=272+7=9。给定 n,请输出它的数根。

这样的话,和计算一个数的位数方法差不多

ans=n;
a=n;
n=0;
while(ans>=10)//如果ans是个位数,就退出循环
{
    if(a<=0)
    {
        a=n;//让a等于新计算出来的数字,从新再来一遍
        ans=n;//ans也要等于新计算出来的数字
        n=0;//把n归零
    }
    n+=a%10;//加上目前数字的最后一位
    a/=10;//去掉个位
}

我看了数据范围:

1≤n≤10^1000

就用了字符串

for(int i=0;i<s.length();i++)
{
    n+=s[i]-0;//加上数字的每一位
}

应该是对的

以上是关于上海月赛 数根的主要内容,如果未能解决你的问题,请参考以下文章

ZZNUOJ_C语言1109:数根(函数专题)(完整代码)

1109: 数根(函数专题)

编程马拉松009-数根

如何证明一个数的数根(digital root)就是它对9的余数?

算法训练第一题

如何理解树根