• [解题报告]1013Digital Roots


    题目大意

    题目原文:http://acm.hdu.edu.cn/showproblem.php?pid=1013

    背景:

    问题描述:
     
    一个正整数的数字根发现总结整数的位数。如果结果值为一位数,那么这个数字就是数字根。如果得出的值包含两个或多个数字,这些数字进行求和,并重复该过程。这被续只要有必要以获取单个数字。
    例如,请考虑 24 正整数。2 和 4 中添加生成一个值 6。因为 6 是 24 的一位数,6 是 24 的数字根。现在考虑 39 正整数。添加 3 和 9 收益率 12。因为 12 不是一个单一的数字,必须重复这一进程。添加 1 和 2 yeilds 3、 单个数字和数字的 39 根。
     
    输入:
    输入的文件将包含正整数,每行一个的列表。输入的结束将由零的整数值表示。
     
    输出:
    对于输入中的每个整数,输出其数字根在输出中的单独一行上。

    Sample Input

    24
    39
    0

    Sample Output

     
    6
    3
    
    

    算法:

    一看到这道题目我一开始就直接用int来输入这个数,所以我WA了一次。后面我想到这个数可能很大,没有办法用整型表示,所以我就改成了字符型数组,最后AC了,也是一个水题,错了一次很不应该。

     

    代码:

    这里附上我的代码,你可以去这里提交你的代码验证你的代码是否正确。

    #include<stdio.h>
    int main(void)
    {
        int a,sum=0,num,i=0;
        char num0[100000];
    
        while(scanf("%s",num0)!=EOF)
        {
            i=0;
            sum=0;
            a=0;
            while(num0[i]!='\0')
            {
                sum=sum+num0[i]-'0';
                i++;
            }
            if(sum==0)break;
            if(sum<10)
                printf("%d\n",sum);
            else
            {
                while(sum>=10)
                {
                    num=sum;
                    sum=0;
                    while(num>=10)
                    {
                        a=num%10;
                        num=num/10;
                        sum=sum+a;
                        if(num<10)
                            sum=sum+num;
                    }
                    num=sum;
                }
                printf("%d\n",sum);
            }
        }
        return 0;
    }

     

  • 相关阅读:
    POJ 1228 Grandpa's Estate | 凸包
    POJ 2187 Beauty Contest | 旋转卡壳
    POJ 3348 Cows | 凸包模板题
    POJ 1375 Intervals | 解析几何
    POJ 2074 | 线段相交
    POJ 1039 Pipe | 线段相交
    POJ 3304 Segments | 线段相交
    POJ 2318 TOYS | 二分+判断点在多边形内
    jpg、jpeg、png... 的区别
    xhr.readyState就绪状态
  • 原文地址:https://www.cnblogs.com/qisong178878915/p/2965886.html
Copyright © 2020-2023  润新知