Cod sursa(job #2434224)

Utilizator CybotStancila Ionut-Marian Cybot Data 1 iulie 2019 12:02:58
Problema Principiul includerii si excluderii Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pinex.in");
ofstream g("pinex.out");
long long a, b, n, k, d[1000001];

void calcul(int x)
{
    k=0;
    int i=2, nr;
    while (x>1)
    {
        nr=0;
        while (x%i==0)
        {
            nr++;
            x=x/i;
        }
        if (nr) d[++k]=i;
        i++;
    }
}

int main()
{
    f>>n;
    for (int contor=1;contor<=n;contor++)
    {
        f>>a>>b;
        calcul(b);
        int nr=0;
        for (int i=1;i<(1<<k);i++)
        {
            int s=0;
            int p=1;
            for (int j=0;j<k;j++)
                if (i & (1<<j))
                {
                    s++;
                    p=p*d[j+1];
                }
            if (s&1) nr=nr+a/p;
            else nr=nr-a/p;
        }
        g<<a-nr<<'\n';
    }
    return 0;
}