记录编号 36652 评测结果 AAAAAAAAAA
题目名称 最终得分 100
用户昵称 Gravatarkaaala 是否通过 通过
代码语言 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;
}