记得要开ll
/*
莫比乌斯反演模板题,也可以直接算phi来做
容斥的解法
求x[1..m],在[1,n]中和其互质的数的个数即可
那么就是n-和x不互质的数个数即可
*/
#include
#include
using namespace std;
#define maxn 100005
#define ll long long
vector
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<
if(pos==fac[m].size())return;
if(cnt%)ans+=n/num;
else ans-=n/num;
for(int i=pos+;i
cin>>m>>n;
ans=n;//x==1时
for(int i=;i<=m;i++)dfs(i,-,,);
cout<<ans<<endl;
}
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章