hdu 1796 容斥原理

来源:互联网 发布:c语言编译器哪个好2016 编辑:程序博客网 时间:2024/05/29 19:32

题目链接:点击打开链接


被这个0坑了好久,题目有矛盾,注意这个0就OK了。


题解:


#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long long ll;int n,m;int num[25];int gcd(int a,int b){return b==0? a:gcd(b,a%b);}ll solve(){ll ans=0;for(int i=1;i<(1<<m);i++){int sum=1,cnt=0;for(int j=0;(1<<j)<=i;j++){if((1<<j)&i){cnt++;sum=sum/gcd(sum,num[j])*num[j];}}if(cnt&1)  ans+=(n-1)/sum;else ans-=(n-1)/sum;}return ans;}int main(){while(cin>>n>>m){for(int i=0;i<m;i++){scanf("%d",num+i);if(num[i]==0)m--,i--;}printf("%lld\n",solve());}    return 0; }


0 0
原创粉丝点击