首页 > 代码库 > uva10325(容斥原理)
uva10325(容斥原理)
题目连接:UVA 10325
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 #include<iostream> 6 using namespace std; 7 #define LL long long 8 LL n,m; 9 LL a[20]; 10 LL gcd(LL a,LL b) 11 { 12 return b==0?a:gcd(b,a%b); 13 } 14 int main() 15 { 16 while(scanf("%lld%lld",&n,&m)!=EOF) 17 { 18 for(int i=0;i<m;i++) 19 scanf("%lld",&a[i]); 20 LL ans=0; 21 for(int i=0;i<(1<<m);i++) 22 { 23 int ct=0; 24 LL temp=1; 25 for(int j=0;j<m;j++) 26 { 27 if(i&(1<<j)) ct++,temp=temp/gcd(temp,a[j])*a[j]; 28 } 29 if(ct&1) ans-=n/temp; 30 else ans+=n/temp; 31 } 32 printf("%lld\n",ans); 33 } 34 }
uva10325(容斥原理)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。