标签:style blog color io os for sp div on
简单的容斥入门题。。
容斥基本的公式早就知道了,但是一直不会写。
下午看到艾神在群里说的“会枚举二进制数就会容斥”,后来发现还真是这样。。
然后直接贴代码了
#include <iostream> #include <stdio.h> #include<string.h> #include<algorithm> #include<string> #include<ctype.h> using namespace std; long long m,n,a[15]; long long gcd(long long a,long long b) { return b?gcd(b,a%b):a; } long long lcm(long long a,long long b) { return a/gcd(a,b)*b; } void ini() { for(int i=0;i<n;i++) { scanf("%I64d",a+i); if(a[i]<1) { n--;i--; //此题输入中可能有0 } } } long long iae() { long long res=0; for(int i=1;i<(1<<n);i++) { long long mut=1,tmp=0; for(int j=0;j<n;j++) { if(i&(1<<j)) { tmp++; mut=lcm(mut,a[j]); } } if(tmp&1) { res+=(m-1)/mut; } else { res-=(m-1)/mut; } } return res; } void solve() { printf("%I64d\n",iae()); } int main() { while(scanf("%I64d%I64d",&m,&n)!=EOF) { ini(); solve(); } return 0; }
标签:style blog color io os for sp div on
原文地址:http://www.cnblogs.com/oneshot/p/4044503.html