https://www.lydsy.com/JudgeOnline/problem.php?id=2440
到今天为止
又进一步的理解了莫比乌斯函数
挺有意思的
本质其实是容斥定理
虽然里边还是有一点看不到他的本质
但是
没关系
一点一点的去理解
这题二分答案
然后o(n)判断
很有意思
以后写容斥定理的时候可以考虑用莫比乌斯函数来简化运算
有意思
还有
最近测评机脑子被驴踢了
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6;
ll miu[N+10],v[N+10];
ll check(ll x){
ll ans=0;
for(ll i=1;i*i<=x;++i){
ans+=miu[i]*(x/(i*i));
}
return ans;
}
int main(){
int T;
cin>>T;
for(int i=1;i<=N;i++) miu[i]=1,v[i]=0;
for(int i=2;i<=N;i++){
if(v[i]) continue;
miu[i] = -1;
for(int j=2*i;j<=N;j+=i){
v[j]=1;
if((j/i)%i==0) miu[j]=0;
else miu[j]*=-1;
}
}
while(T--){
ll k;
cin>>k;
ll l=1,r=1e10;
while(l<r){
ll mid=(l+r)/2;
if(check(mid)>=k)
r=mid;
else
l=mid+1;
}
cout<<l<<endl;
}
}