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
上一题
下一题