正在载入在线练习界面,本页内容可直接阅读…
AK CSP › CSP-J 2023 第一轮真题 › 第 32 题
CSP-J 2023 第一轮 第 32 题:程序(三):输入5时的输出
题目
#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$ 的整数,完成下面的判断题和单选题。
本小题
当输入为 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号