Cod sursa(job #2776283)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 19 septembrie 2021 10:26:06
Problema Principiul includerii si excluderii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include<fstream>
using namespace std;
ifstream F("pinex.in");
ofstream G("pinex.out");
#define N 1000001
long long v[N],p[N],a[101],i,j,o,x,y,m,d,l,k,t,r,s;
int main()
{
	for(m=N-1,i=2,F>>o;i<=m;++i)
		if(!v[i])
			for(p[++d]=i,j=i*i;j<=m;j+=i)
				v[j]=1;
	while(o--) {
		for(F>>x>>y,l=x,k=0,i=1;i*i<=y;++i)
			if(y%p[i]==0)
				for(a[++k]=p[i];y%p[i]==0;y/=p[i]);
		if(y>1)
			a[++k]=y;
		for(t=1<<k,i=1;i<t;++i) {
			for(r=1,s=j=0;j<k;++j)
				if((i&(1<<j))>0)
					s++,r*=a[j+1];
            l+=((s%2==0?1:-1)*x/r);
		}
		G<<l<<"\n";
	}
	return 0;
}