A62006 | 2023年CSP-S1阅读程序题2:01 #include <iostream>
来源2023年
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
2023年CSP-S1阅读程序题2:
01 #include <iostream>
02 #include <cmath>
03 #include <vector>
04 #include <algorithm>
05 using namespace std;
06
07 long long solve1(int n){
08 vector<bool> p(n+1, true);
09 vector<long long> f(n+1,0),g(n+1,0);
10 f[1]= 1;
11 for (int i = 2; i*i <= n; i++){
12 if (p[i]){
13 vector<int> d;
14 for(int k = i;k <=n; k *= i)d.push_back(k);
15 reverse(d.begin(),d.end());
16 for (int k:d){for (int j =k; j<=n;j += k){
18 if (p[j]){
19 p[j]= false;
20 f[j]= i;
21 g[j]= k;
22 }
23 }
24 }
25 }
26 }
27 for (int i = sqrt(n)+ 1; i <= n; i++){
28 if (p[i]){
29
f[i]= i;
30
g[i]= i;
31 }
32 }
33 long long sum = 1;
34 for(int i = 2; i <= n; i++){
35 f[i]= f[i / g[i]]*(g[i]* f[i]- 1)/(f[i]- 1);
36 sum += f[i];
37 }
38 return sum;
39}
40
41 long long solve2(int n){
42 long long sum = 0;
43 for(int i= 1; i <= n; i++){
44 sum += i*(n / i);
45 }
46 return sum;
47}
48
49 int main(){
50 int n;
51 cin >> n;
52 cout << solve1(n)<< endl;
53 cout << solve2(n)<< endl;
54 return 0;
55}假设输入的n是不超过1000000的自然数,完成下面的判断题和单选题:
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?