Cod sursa(job #2279020)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 8 noiembrie 2018 20:32:44
Problema Principiul includerii si excluderii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pindex.in");
ofstream g("pindex.out");
long long t,a,b,nr,v[101],i,j,nrc,rez,p;
int main()
{
    f>>t;
    while(t--)
    {
        f>>a>>b;
        nr=0;
        for(i=2;i*i<=b;i++)
        {
            if(b%i==0)
            {
                v[nr]=i;
                nr++;
                while(b%i==0)
                {
                    b=b/i;
                }
            }
        }
        if(b>1)
        {
            v[nr]=b;
        }
        rez=0;
        for(i=1;i<(1LL<<(nr+1));i++)
        {
            nrc=0;
            p=1;
            for(j=0;j<=nr;j++)
            {
                if(((1LL<<j)&i)!=0)
                {
                    nrc++;
                    p=p*v[j];
                }
            }
            if(nrc%2==1)
            {
                rez=rez+a/p;
            }
            else
            {
                rez=rez-a/p;
            }
        }
        g<<a-rez<<"\n";
    }
    return 0;
}