比赛 20101118 评测结果 AAAWWWWWWW
题目名称 最终得分 30
用户昵称 郭乾乐 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-18 10:40:26
显示代码纯文本
#include<cstdio>
using namespace std;
int n,r,l,gc=0;
long long g[16],a[16];
int gy(long long a,long long b)
{
	long long r;
	while(a%b!=0)
	{
		r=a%b;
		a=b;
		b=r;
	}
	return b;
}
bool pan[16];
int chu()
{
	int j,i;
	long long sum=0;
	for(i=1;i<=n;i++)
		if(!pan[i])
		{
	        for(j=1;j<=n;j++)
			    if(i!=j&&!pan[j])
			    {
				    int t=g[i]*g[j]/gy(g[i],g[j]);
    				sum+=(r/t-l/t);
		    		pan[j]=true;
				}
			pan[i]=true;
		}
	return sum;
}
int main()
{
	freopen("eight.in","r",stdin);
	freopen("eight.out","w",stdout);
	int t,i,j,sum=0,del=0;
	int ci=0;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);
	scanf("%d%d",&l,&r);
	if(r-l<=500000||(r-l<=1000000&&n<=10))
	{
		for(i=l;i<=r;i++)
			if(i%8==0)
			{
				bool pp=true;
				for(j=1;j<=n;j++)
				    if(i%a[j]==0&&i%a[j]==0)
					{
						pp=false;
						break;
					}
				if(pp)
					ci++;
			}
		printf("%d",ci);
		return 0;
	}
	else
	{
	sum+=(r/8-l/8);
	for(i=1;i<=n;i++)
	{
		if(a[i]%8==0)
		{
			t=a[i]*8/gy(a[i],8);
			g[++gc]=t;
			del+=(r/a[i]-l/a[i]);
		}
		else
		{
			t=gy(a[i],8);
			t=a[i]*8/t;
			g[++gc]=t;
			del+=(r/t-l/t);
		}
	}
	long long x=chu();
	sum=sum-del+x;
	printf("%d\n",sum);
	return 0;
	}
}