正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-J 2023 第一轮真题 › 第 32 题

CSP-J 2023 第一轮 第 32 题:程序(三):输入5时的输出

阅读程序 · 初等数论 · 难度 较难 · 答案 C

题目

#include <iostream>
#include <cmath>
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;
}

假设输入的 $n$ 是绝对值不超过 $1000$ 的整数,完成下面的判断题和单选题。
CSP-J 2023 第一轮 第 32 题 原题
原题扫描(页面加载后可直接在线作答)

本小题

当输入为 5 时,输出为( )

选项

  • A. 651 625
  • B. 650 729
  • C. 651 676
  • D. 652 625

答案

C

题解

答案是 C. 651 676。

先看两个函数的作用:

  • solve1(n):返回 \(n^2\)。
  • solve2(n):返回 \(n\) 的所有正因数的平方和。循环每次找到一对因数 \(i\) 和 \(n/i\),如果两个因数相同,就只计算一次。

输入 5 时:

第一个输出:solve2(solve1(5))

solve1(5) = 25,而 \(25\) 的正因数是 \(1、5、25\),所以: \[ \text{solve2}(25)=1^2+5^2+25^2=1+25+625=651 \]

第二个输出:solve1(solve2(5))

\(5\) 的正因数是 \(1、5\),所以: \[ \text{solve2}(5)=1^2+5^2=26 \] 再计算: \[ \text{solve1}(26)=26^2=676 \]

因此输出为: ``text 651 676 ``

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号