测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40800. 序列求和

填空题 困难

题目描述

序列求和

题目描述

学习了约数后,小明对于约数很好奇,他发现,给定一个正整数 t,总是可以找到含有 t 个约数的整数。小明对于含有 t 个约数的最小数非常感兴趣,并把它定义为 St 。

例如 S1 = 1, S2 = 2, S3 = 4, S4 = 6,· · · 。

现在小明想知道,前 60 个 Si 的和是多少?即 S1 + S2 + · · · + S60 是多少?

参考答案

#include<bits/stdc++.h> using namespace std; #define INF 0x7fffffff #define pb(x) push_back(x) #define rep(i,a,n) for(int i=a;i<=n;i++) typedef long long LL; const int maxn=1e2+10; const int N=1e4+10; const int mod=20201114; int a[maxn]; int main(){ std::ios::sync_with_stdio(false); a[1]=1; for(int i=1;i<=N;i++){ int x=0; for(int j=1;j*j<=i;j++){ if(j*j==i) x+=1; else if(i%j==0) x+=2; } for(int j=1;j<=x;j++) if(!a[j]) a[j]=i; } int ans=0; for(int i=1;i<=60;i++) ans+=a[i]; cout<<ans<<endl; return 0; }

答案解析

答案是101449

上一题 下一题