记录编号 |
36652 |
评测结果 |
AAAAAAAAAA |
题目名称 |
八 |
最终得分 |
100 |
用户昵称 |
kaaala |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.004 s |
提交时间 |
2012-03-16 08:10:25 |
内存使用 |
0.27 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
long long N,A,B,num[16];
long long gcd(long long a,long long b)
{
if(a<b)
swap(a,b);
if(b==0)
return a;
return gcd(b,a%b);
}
long long dfs(long long now,long long l,long long k,long long lim)
{
long long res=0;
for(int i=l;i<=N;i++)
{
long long j=now*num[i]/gcd(num[i],now);
if(j<=lim)
{
res+=lim/j*k;
res+=dfs(j,i+1,-k,lim);
}
}
return res;
}
int main()
{
freopen("eight.in","r",stdin);
freopen("eight.out","w",stdout);
scanf("%lld",&N);
for(int i=1;i<=N;i++)
{
scanf("%lld",num+i);
while(num[i]%8!=0)
num[i]<<=1;
}
scanf("%lld%lld",&A,&B);
printf("%lld\n",B/8-dfs(1,1,1,B)-((A-1)/8-dfs(1,1,1,A-1)));
return 0;
}