• CSP-J 2023 入门级 第一轮 阅读程序(3)


    【题目】

    CSP-J 2023 入门级 第一轮 阅读程序(3)

    #include  
    #include 
    using namespace std;
    int solve1(int n) {
        return n * n;
    }
    int solve2(int n) {
        int sum = 0;
        for (int i = 1; i <= sqrt(n); i++) {
            if (n % i == 0) {
                if (n / i == i) {
                    sum += i * i;
                } else {
                    sum += i * i + (n / i) * (n / i);
                }
            }
        }
        return sum;
    }
    int main() {
        int n;
        cin >> n;
        cout << solve2(solve1(n)) << " " << solve1((solve2(n))) << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    假设输入的n是绝对值不超过1000的整数,完成下面的判断题和单选题。
    判断题
    27. 如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )
    28. 第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次( )
    29. 如果输入的n为质数,solve2(n)的返回值为 n 2 + 1 n^2+1 n2+1( )

    单选题
    30. 如果输入的n为质数p的平方,那么solve2(n)的返回值为( )
    A. p 2 + p + 1 p^2+p+1 p2+p+1 B. n 2 + n + 1 n^2+n+1 n2+n+1 C. n 2 + 1 n^2+1 n2+1 D. p 4 + 2 p 2 + 1 p^4+2p^2+1 p4+2p2+1
    31. 当输入为正整数时,第一项减去第二项的差值一定( )
    A. 大于0 B. 大于等于0且不一定大于0 C. 小于0 D. 小于等于0且不一定小于0
    32. 当输入为"5"时,输出为( )
    A. “651.625” B. “650.729” C. “651.676” D. “652.625”

    【题目考点】

    数学

    • 因数
    • 质数

    【解题思路】

    int solve1(int n) {
        return n * n;
    }
    
    • 1
    • 2
    • 3

    solve1(n),求 n 2 n^2 n2

    int solve2(int n) {
        int sum = 0;
        for (int i = 1; i <= sqrt(n); i++) {
            if (n % i == 0) {
                if (n / i == i) {
                    sum += i * i;
                } else {
                    sum += i * i + (n / i) * (n / i);
                }
            }
        }
        return sum;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    i从1循环到 n \sqrt{n} n ,如果i是n的因数:

    • 如果n/i为i,即i为 n \sqrt{n} n ,此时i是n的因数,把 i 2 i^2 i2加到sum中。
    • 如果n/i不为i,此时i与n/i是n的因数,把 i 2 i^2 i2 ( n / i ) 2 (n/i)^2 (n/i)2加到sum中。

    i从1循环到 n \sqrt{n} n ,取循环中取到的i或n/i可以遍历n的所有因数。
    因此solve2(n)求的是n的所有因数的平方和。

    int main() {
        int n;
        cin >> n;
        cout << solve2(solve1(n)) << " " << solve1((solve2(n))) << endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    主函数中,第一个输出的solve2(solve1(n)) n 2 n^2 n2的所有因数的平方和。第二个输出的solve1((solve2(n)))是n的所有因数的平方和的平方。

    判断题
    27. 如果输入的n为正整数,solve2函数的作用是计算n所有的因子的平方和( )

    答:T
    上面已解释

    1. 第13~14行的作用是避免n的平方根因子i(或n/i)进入第16行而被计算两次( )

    答:T
    n的平方根因子,就是 n \sqrt{n} n n \sqrt{n} n 是整数),在计算因数的平方和时, ( n ) 2 (\sqrt{n})^2 (n )2只需要计算一次,需要进入第14行,而不能进入第16行被计算两次。

    1. 如果输入的n为质数,solve2(n)的返回值为 n 2 + 1 n^2+1 n2+1( )

    答:T
    质数n只有1和n两个因数,因数的平方和为 n 2 + 1 n^2+1 n2+1

    单选题
    30. 如果输入的n为质数p的平方,那么solve2(n)的返回值为( )
    A. p 2 + p + 1 p^2+p+1 p2+p+1 B. n 2 + n + 1 n^2+n+1 n2+n+1 C. n 2 + 1 n^2+1 n2+1 D. p 4 + 2 p 2 + 1 p^4+2p^2+1 p4+2p2+1

    答:B
    n = p 2 n=p^2 n=p2,n的所有因数为: 1 , p , p 2 1, p, p^2 1,p,p2,因数的平方和为: 1 + p 2 + p 4 1+p^2+p^4 1+p2+p4或写为 1 + n + n 2 1+n+n^2 1+n+n2

    1. 当输入为正整数时,第一项减去第二项的差值一定( )
      A. 大于0 B. 大于等于0且不一定大于0 C. 小于0 D. 小于等于0且不一定小于0

    答:D
    如果输入的是n,第一项是 n 2 n^2 n2所有因数的平方和。第二项是n的所有因数的平方和的平方。
    可以用特例法:
    如果n是1,第一项是1,第二项是1,差是0。
    如果n是2,第一项是4的所有因数1,2,4的平方和,是21。第二项是2的所有因数1,2的平方和5的平方为25。第一项减第二项小于0。
    只有D符合条件。

    1. 当输入为"5"时,输出为( )
      A. “651 625” B. “650 729” C. “651 676” D. “652 625”

    答:C
    第一项是 5 2 = 25 5^2=25 52=25所有因数1,5,25的平方和: 1 2 + 5 2 + 2 5 2 = 651 1^2+5^2+25^2=651 12+52+252=651
    第二项是5的所有因数1,5的平方和26的平方: 2 6 2 = 676 26^2=676 262=676

    【答案】

    1. T
    2. T
    3. T
    4. B
    5. D
    6. C
  • 相关阅读:
    PC端 Rockchip RKNN-Toolkit 连接 Rockchip NPU 设备
    在Kubernetes中实现gRPC流量负载均衡
    git 删除远程非主分支
    天龙八部门派采集任务坐标
    python 服务器数据转发数据 跳板机?
    一种基于C++的结构体赋值内存的方法探究
    Git常用命令学习笔记
    【Docker系列】跨平台 Docker 镜像构建:深入理解`--platform`参数
    【华为OD机试】服务失效判断【2023 B卷|200分】
    SpringBoot - 配置 Filter 的几种方式
  • 原文地址:https://blog.csdn.net/lq1990717/article/details/133149041