容斥原理——hdu2841
阅读原文时间:2023年07月08日阅读:1

记得要开ll

/*
莫比乌斯反演模板题,也可以直接算phi来做
容斥的解法
求x[1..m],在[1,n]中和其互质的数的个数即可
那么就是n-和x不互质的数个数即可
*/
#include
#include
using namespace std;
#define maxn 100005
#define ll long long
vectorfac[maxn];
ll n,ans;
void init(){//质因子分解,埃氏筛
for(int i=;i<=;i++){ if(fac[i].size())continue; fac[i].push_back(i); for(int j=;j*i<=;j++) fac[i*j].push_back(i); } } //枚举的m,在m的质因子里的位置pos,当前的因数num,步长 void dfs(int m,ll pos,ll num,int cnt){ //cout<n)return;
if(pos==fac[m].size())return;
if(cnt%)ans+=n/num;
else ans-=n/num;
for(int i=pos+;i>t;while(t--){
cin>>m>>n;
ans=n;//x==1时
for(int i=;i<=m;i++)dfs(i,-,,);
cout<<ans<<endl;
}
}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章