社区讨论
从P3455来的,为什么RE了?
P4450双亲数参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhj2w56e
- 此快照首次捕获于
- 2025/11/03 19:50 4 个月前
- 此快照最后确认于
- 2025/11/03 19:50 4 个月前
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e6+5;
ll ans;
ll t,n,m,k,cnt,mu[N],prime[N],sum[N];
bool vis[N];
#define int ll
void init(){
mu[1]=1;
for(int i=2;i<N;i++){
if(!vis[i]) prime[++cnt]=i,mu[i]=-1;
for(int j=1;j<=cnt&&i*prime[j]<N;j++){
vis[i*prime[j]]=1;
if(i%prime[j]==0){
mu[i*prime[j]]=0;
break;
}
mu[i*prime[j]]=-mu[i];
}
}
for(int i=1;i<N;i++) sum[i]=sum[i-1]+mu[i];
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>t;
init();
while(t--){
ans=0;
cin>>n>>m>>k;
int end=0,new_n=n/k,new_m=m/k;
if(new_n<new_m) swap(new_n,new_m);
for(int l=1,r;l<=new_m;l=r+1){
r=min(new_n/(new_n/l),new_m/(new_m/l));
ans+=(sum[r]-sum[l-1])*(ll)(new_n/l)*(new_m/l);
}
cout<<ans<<'\n';
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...