Digital Roots

Digital Roots

中文:

正整数的数字根是通过对整数的数字求和来找到的。如果结果值是一位数,则该位数是数字根。如果结果值包含两个或多个数字,则将这些数字相加并重复该过程。只要获得一个位数就可以继续进行。

例如,考虑正整数24。将2和4相加得到值6。因为6是一位数,所以6是24的数字根。现在考虑正整数39。将3和9相加得到12。由于12不是一位数,因此必须重复该过程。将1和2的乘积3相加,一位数字,还有39的数字根。

思路:

因为这个是足够大,所以不能用int,选择用char,因此在求和时需要-48,

只需求出各个位的和在求它与9的余数即可(若被9整除则输出9)

代码:

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    char a[1000];
    int l,i,j,sum=0;
    while(scanf("%s",&a)!=EOF)
    {
        sum=0;
        if(strcmp(a,"0")==0)
        {
            return 0;
        }
        l=strlen(a);
            for(i=0;i<l;i++)
            {
                sum=sum+a[i]-'0';
            }
        if(sum%9==0)printf("9\n");
        if(sum%9!=0)printf("%d\n",sum%9);
    }
    return 0;
}