Cod sursa(job #525765)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 26 ianuarie 2011 08:53:33
Problema Mins Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include<stdio.h>
long c,d,ciur[1000010],dns[1000000];
long long s;

void back(long poz,long prod,long n,long val)
{
	if (poz>n || 1LL*c<1LL * prod*dns[poz])
	{
		if(val%2==0)
			s=s+1LL * (d/prod)*(c/prod);
		else
			s=s-1LL * (d/prod)*(c/prod);
		return;
	}
	back(poz+1,prod*dns[poz],n,val+1);
	back(poz+1,prod,n,val);
}

int main()
{
long aux,i,j;
freopen("mins.in","r",stdin);
freopen("mins.out","w",stdout);
scanf("%ld%ld",&c,&d);
if (c>d)
{
aux=c;
c=d;
d=aux;
}
for( i=2;i<=d;++i)
	if(!ciur[i])
	{
		for(j=i*i;j<=d;j+=i)
			ciur[j]=1;
		dns[++dns[0]]=i;
	}
--c;
--d;
s=0;
back(1,1,dns[0],0);
printf("%lld",s);
return 0;
}