Cod sursa(job #498592)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 5 noiembrie 2010 16:39:53
Problema Principiul includerii si excluderii Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
using namespace std;
long long i,j,np,d,a,b,bc,s,z,n,p[110000],D[110000];
int main()
{ifstream q("pinex.in");
ofstream w("pinex.out");
q>>n;
for(i=2;i<=100000;i++)
  if(!p[i])
   {p[++np]=i;
   for(j=i*i;j<=100000;j+=i)
	 p[j]=1;}
	for(i=1001;i<=100000;i++)
      if(!p[i])
	   p[++np]=i;
D[0]=1;
for(;n;n--)
  {q>>a>>b;
  d=1;
  bc=b;
  for(i=1;i<=np;i++)
	{if(p[i]*p[i]>bc)
	  break;
	if(bc%p[i]==0)
     {z=p[i];
     while(bc%z==0)
        bc/=z;z=-z;
    for(j=0;j<d;j++)D[j+d]=z*D[j];
      d*=2;}}
  if(bc>1)
   {z=-bc;
	for(j=0;j<d;j++)D[j+d]=z*D[j];
	  d*=2;}
  s=0;
  for(i=0;i<d;i++)
	s+=a/D[i];
  w<<s<<"\n";}
return 0;}