为什么啊!SP34112,样例都能过,一交就是UKE
  • 板块灌水区
  • 楼主T7_Daniel
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/8/23 11:28
  • 上次更新2023/11/3 01:48:15
查看原帖
为什么啊!SP34112,样例都能过,一交就是UKE
903392
T7_Daniel楼主2023/8/23 11:28
#include<bits/stdc++.h>
using namespace std;
bitset<10000010> vk;
unsigned long long tot=0,prime[10000010],mky[10000010];
void prepare(){
	mky[1]=1;
	for(int i=2; i<=1e7; ++i){
		if(!vk[i]) prime[++tot]=i,mky[i]=-1;
		for(unsigned long long j=1; j<=tot && i*prime[j]<=1e7; ++j){
			vk[i*prime[j]]=1;
			if(i%prime[j]==0){
				mky[i*prime[j]]=0;
				break;
			}
			mky[i*prime[j]]=-mky[i];
		}
	}
}
unsigned long long n;
unsigned long long uans(int n){
	unsigned long long ans=0,sqr=sqrt(n);
	for(unsigned long long i=1; i<=sqr; ++i) ans+=(n/i)*i+(__int128)(n/i)*(n/i+1)/2;
	return ans-(__int128)sqr*(sqr+1)/2*sqr;
}
int main(){
	prepare();
	unsigned long long t; cin>>t; 
	while(t--){
		cin>>n;
		int tmp=sqrt(n),ans=0;
		for(unsigned long long i=1; i<=tmp; ++i)
			ans+=mky[i]*i*uans(n/i/i);
		cout<<ans<<'\n';
	}
	return 0;
}
2023/8/23 11:28
加载中...