暴力完美卡过。。。
查看原帖
暴力完美卡过。。。
658786
STUDENT00楼主2022/10/31 21:35

最后一个点970ms,代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
int n,f[10000010],ans;
bool noPM[10000010];
vector<int> prime;
signed main(){
	scanf("%lld",&n);
	for(int i=2;i*i<=n;i++){
		if(!noPM[i]){
			for(int j=i*i;j<=n;j+=i) noPM[j]=1;
		}
	}
	for(int i=2;i<=n;i++){
		if(!noPM[i]) prime.push_back(i);
	}
	for(int i=1;i<=n;i++) f[i]=i;
	for(int i=0;i<prime.size();i++){
		int p=prime[i];
		for(int j=p;j<=n;j+=p) f[j]=f[j]/p*(p-1);
	}
	for(int i=1;i<=n;i++) f[i]+=f[i-1];
	for(int i=1;i<=n;i++) ans=(ans+i*i%mod*(f[n/i]*2-1)%mod)%mod;
	printf("%lld",ans);
	return 0;
}
2022/10/31 21:35
加载中...