uva--10325
来源:互联网 发布:网络使人更疏远的数据 编辑:程序博客网 时间:2024/05/22 15:57
容斥原理的应用。
推导过程类似于欧拉函数的推导过程,但是不能直接用公式;
所以利用二进制模拟的运算。
#include<iostream>#include<cstring>#include<cstdio>using namespace std;typedef long long LL;LL gcd(LL a,LL b){ if(!b) return a; gcd(b,a%b);}//求最小公倍数LL Lcm(LL a,LL b){LL t=gcd(a,b); return a/t*b; //防止越界,先除后乘}int M[20],m,n;LL solve1(){ LL i,j,k,ans=n; for(i=1;i<=(1<<m)-1;i++) { int cnt=0,m1=0;LL mult=1; //mult必须定义为longlong类型,否则就会出错 j=i; while(j) { if(j&1) { cnt++; mult=Lcm(mult,M[m1]); } m1++; j=j>>1; } int cur=n/mult; if(cnt%2==1) ans-=cur; else ans+=cur; } return ans;}LL solve(){ LL i,j,k,ans=0; for(i=1;i<(1<<m);i++) { int cnt=0;LL mult=1; for(j=0;j<m;j++) { if(i&(1<<j)) { cnt++; mult=Lcm(mult,M[j]); } } int cur=n/mult; if(cnt%2) ans+=cur; else ans-=cur; } return n-ans;}int main(){ int i,j; while(cin>>n>>m) { memset(M,0,sizeof(M)); for(i=0;i<m;i++) cin>>M[i]; LL ans=solve1(); cout<<ans<<endl; } return 0;}
0 0
- uva--10325
- UVA 10325
- UVA 10325 The Lottery
- UVa 10325 - The Lottery
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- poj 2353 双向DP
- hdu 4939 Stupid Tower Defens2014 Multi-University Training Contest 7
- truncate,delete,drop的异同点
- KVM虚拟机在线更改iso
- 正则总结
- uva--10325
- HDU 1671 Phone List Trie树
- python 发送http请求
- Java 定时器使用
- STL之查找
- TCP协议三次握手过程分析
- hdu4939 Stupid Tower Defense(Dp)
- 每天学一点C#
- zoj3336 模拟