[HDU 2841]Visible Trees:容斥原理
2017-04-12 16:57
447 查看
点击这里查看原题
一个点能被看见的条件是gcd(x,y)=1,因此,问题转化为n,m范围内有多少数对的gcd为1。
可以运用容斥原理,先求一个莫比乌斯函数,然后计算每一行的合法的数目。
一个点能被看见的条件是gcd(x,y)=1,因此,问题转化为n,m范围内有多少数对的gcd为1。
可以运用容斥原理,先求一个莫比乌斯函数,然后计算每一行的合法的数目。
/* User:Small Language:C++ Problem No.:5475 */ #include<bits/stdc++.h> #define ll long long #define inf 999999999 using namespace std; const int M=1e5+5; int n,m,mu[M],prime[M],cnt; ll ans; bool np[M]; int main(){ freopen("data.in","r",stdin);// ios::sync_with_stdio(false); for(int i=2;i<=100000;i++){ if(!np[i]){ prime[++cnt]=i; mu[i]=-1; } for(int j=1;j<=cnt&&prime[j]*i<=100000;j++){ np[i*prime[j]]=1; if(i%prime[j]==0){ mu[i*prime[j]]=0; break; } mu[i*prime[j]]=-mu[i]; } } int t; cin>>t; while(t--){ cin>>n>>m; ans=(ll)n*m; for(int i=2;i<=n;i++) for(int j=i;j<=n;j+=i) ans+=m/i*mu[i]; cout<<ans<<endl; } return 0; }
相关文章推荐
- HDU 2841 Visible Trees 数论+容斥原理
- HDU 2841 Visible Trees 数论+容斥原理
- HDU 2841 Visible Trees - 莫比乌斯 /容斥原理
- hdu 2841 Visible Trees (容斥原理)
- HDU 2841 Visible Trees (容斥原理好题)
- hdu 2841 Visible Trees (容斥原理)
- hdu 2841 Visible Trees(容斥原理)
- hdu 2841 Visible Trees【容斥原理】
- hdu 2841 Visible Trees(容斥原理)
- HDU 2841 Visible Trees 解题报告(筛 or 容斥原理)
- HDU 2841 Visible Trees(容斥原理)
- hdu 4135 Co-prime +hdu 2841 Visible Trees(容斥原理)
- hdu 2841 Visible Trees(容斥原理)
- hdu 2841 Visible Trees 容斥原理
- [思维+容斥原理] hdu 2841 Visible Trees
- 【HDU 2841】Visible Trees(容斥原理-好题)
- HDU 2841-Visible Trees(容斥原理)
- HDU 2841 Visible Trees(容斥原理,数论)
- HDU 2841 Visible Trees (素因子分解,容斥原理)
- HDU 2841 Visible Trees (数论,容斥原理)