www.vijos.cn/Problem_Show.asp
啥也别说了。。直接上容斥原理。。
Code:
#include<iostream>
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
const int inf=~0U>>1;
typedef long long ll;
int a,b,A[20],n;
int Count(int a,int b,int x)
{
return b/x-(a-1)/x;
}
ll gcd(ll a,ll b)
{
return b?gcd(b,a%b):a;
}
ll lcm(ll a,ll b)
{
return a/gcd(a,b)*b;
}
ll ans=0;int d;
void dfs(int p,ll s,int ch)
{
if(s>b) return;
if(p==n)
{
int d=Count(a,b,s);
if(ch&1) ans-=d;
else ans+=d;
return;
}
ll NewOne=lcm(s,A[p]);
dfs(p+1,NewOne,ch+1);
dfs(p+1,s,ch);
}
void init()
{
cin>>n;
rep(i,n) cin>>A[i];
cin>>a>>b;
}
int main()
{
//freopen("in","r",stdin);
init();
dfs(0,8,0);
cout<<ans<<endl;
}