TLE and AC P1829
查看原帖
TLE and AC P1829
813622
Igallta楼主2024/4/30 10:26
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e7+1,mod=20101009; 
int T,n,m,sum[N],G[N],tot,prim[N],mu[N],ans,cot;
bitset<N>vis;
void miu(int n) {//cnm sb SPOJ ni ma si le
	mu[1] = 1;
	for (int i = 2; i <= n; i++) {
		if (!vis[i])mu[prim[++tot] = i] = -1;
		for (int j = 1; j <= tot && i * prim[j] <= n; j++) {
			vis[i * prim[j]] = 1;
			if (i % prim[j] == 0) {
				mu[i * prim[j]] = 0;
				break;
			} else mu[i * prim[j]] = mu[i] * (-1);
		}
	}
	for(int i=1;i<=n;i++){
		if(mu[i]){
			for(int j=i;j<=n;j+=i)G[j]=(G[j]+mu[i]*i)%mod;	 
		}
	}
	for(int i=1;i<=n;i++){
		sum[i]=sum[i-1]+i;
		sum[i]%=mod;
	}
}
signed main(){
    ios::sync_with_stdio(0);
	cin>>n>>m;
	miu(max(n,m));
	for(int i=1;i<=min(n,m);i++){
		cot=(sum[n/i]*sum[m/i])%mod;
		cot*=(G[i]);
		cot%=mod;//sb spoj
		cot*=i; 
		cot%=mod;
		ans+=cot;
		ans%=mod;
	}
	cout<<(ans%mod+mod)%mod;
    return 0;
}
2024/4/30 10:26
加载中...