zoukankan      html  css  js  c++  java
  • 1013 ACM 杭电 root

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1013
    题意:求两个数的根
    如: 12->3,99->9,80->8
    注意题目没有限制数的大小,开始我默认 最大的数为99999,这样,第一轮相加后最大为45,还是两位数,然后4+5=9<10,只需要一轮的 取模和取商就好。但是并非如此,还是要写一个循环,能在一定条件下多次循环。例如,如果对单个字符相加后为983,循环的过程就是
    983
    98 3
    9 8+3
    0 9+8+3
    20>9
    2 0
    0 2
    打印 2
    注意:
    输入的数值会出现越界,所以要用字符串进行代替数值进行输入。用str[i]-‘0’将字符转换成数字

    #include<stdio.h>
    #include<string.h>
    
    char str[1001];
    
    int main()
    {
    
        int sum,i;
        while(scanf("%s",&str)!=EOF&&str[0]!='0')
        {
            sum=0;
            for( i=0;i<strlen(str);i++)
                sum+=str[i]-'0';
            while(sum>9)
            {
                i=0;
                while(sum>0)
                {
                i+=sum%10;
                sum/=10;
                }
                sum=i;
            }
            printf("%d
    ",sum);
        }
    }
  • 相关阅读:
    暑假学习
    暑假学习
    暑假学习
    暑假学习
    暑假学习
    经验教训+总结
    NT 时刻
    联赛模拟测试 17
    联赛模拟测试 16
    联赛模拟测试 15
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/9588681.html
Copyright © 2011-2022 走看看