• UVA10922 【2 the 9s】


    题目大意:有一个众所周知的结论,如果一个数(N)(9)的倍数,那么它各位数字上的和也是(9)的倍数,现在,基于递归测试,求递归深度。

    其中,(N leq 10^{1000})

    第一眼看到你可能会以为这题要用到高精度,其实仔细思考一下,我们这道题要用到的其实只有(N)各位数字上的和,所以我们采用字符串的形式读进来,然后累加各位数上的和,其实就相当于模拟了第一层递归。

    然后直接用(while)来模拟递归过程,记录深度即可。

    最后,此题的输出在(UVA)众多毒瘤输出中显得异常友好,所以算是一道不错的练习递归的题目虽然我没有写递归

    code:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    
    using std::string;
    string s;
    
    int main() {
        while (std::cin >> s) {
            int sum = 0;
            if (s.length() == 0 || s[0] == '0') break;
            for (int i = 0; i < s.length(); i++)
                sum += s[i] - 48; // 0的ASCLL码即48
            int dep = 0;
            bool flag = false; // 记录能否被9整除
            if (sum % 9 == 0)
                dep = 1, flag = true; // 一个小细节:若第一层能被9整除,那么深度应直接记录为1
            if (!flag) {
                std::cout << s << " is not a multiple of 9." << '
    ';
                continue;
            }
            else {
                while (sum % 9 == 0 && sum > 9) {
                    int temp = sum;
                    sum = 0;
                    while (temp) {
                        sum += temp % 10;
                        temp /= 10;
                    }
                    ++dep;
                } // 模拟递归过程
                std::cout << s << " is a multiple of 9 and has 9-degree " << dep << "." << '
    ';
            }
        }
        return 0;
    }
    
    

    完结撒花(✪ω✪)

  • 相关阅读:
    祥解使用 SQL Server 2005/2008 发送数据库邮件
    将Virtual Server 2005 的虚拟硬盘(VHD)文件复制到HyperV
    Win2008 64位 iis7 环境下安装Discuz!NT
    seo
    找了好办天才找到的asp生成图片学习一下
    1.1 开发背景 (学习图书连载csdn
    我眼中的C# 3.0
    google编程
    反射之反思
    我要减肥
  • 原文地址:https://www.cnblogs.com/Hydrogen-Helium/p/11738024.html
Copyright © 2020-2023  润新知