Cod sursa(job #1935767)

Utilizator RaduhhRadu Flocea Raduhh Data 22 martie 2017 17:18:33
Problema Principiul includerii si excluderii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h> 
using namespace std;
long long i,n,a,b,ciur[100500],j,CIUR,D[300],d,rs; bool e[1000005]; int main() { ifstream cin("pinex.in"); ofstream cout("pinex.out"); for (i=2; i<=1000000; i++) if (!e[i]) for (j=2; j<=1000000/i; j++) e[i*j]=true; for (i=2; i<=1000000; i++) if (!e[i]) ciur[++CIUR]=i; cin>>n; for (i=1; i<=n; i++) { cin>>a>>b; d=rs=0; for (j=1; ciur[j]<=sqrt(b); j++) { if (b%ciur[j]==0) { D[d++]=ciur[j]; while (b%ciur[j]==0) b/=ciur[j]; } } if(b>1) D[d++] = b; for (long long j=1; j<(1<<d); j++) { long long k=0,pr=1,semn=-1; for (long long z=0; z<d; z++) if ((1<<z)&j) pr*=D[z],k++; if (k%2) semn=1; rs+=(a/pr)*(semn); } cout<<a-rs<<'\n'; } }