Cod sursa(job #3343867)

Utilizator nistor_dora_valentinaNistor Dora Valentina nistor_dora_valentina Data 28 februarie 2026 17:30:04
Problema Principiul includerii si excluderii Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("pinex.in");
ofstream fout("pinex.out");
long long m, a, b, i, j, d, n, ans, mask, pr, nr;
int main()
{
    fin>>m;
    while(m--)
    {
        fin>>a>>b;
        int ca=b, d=2;
        vector <int> div;
        while(ca>1)
        {
            if(ca%d==0)
            {
                div.push_back(d);
                while(ca%d==0)
                    ca/=d;
            }
            d++;
            if(d*d>ca)
                d=ca;
        }
        n=div.size(), ans=0;
        for(mask=0; mask<(1<<n); mask++)
        {
            pr=1, nr=0;
            for(int i=0; i<n; i++)
                if(mask&(1<<i))
                {
                    pr*=div[i];
                    nr++;
                }
            if(pr>1)
            {
                if(nr%2==1)
                    ans+=a/pr;
                else
                    ans-=a/pr;
            }

        }
        fout<<a-ans<<'\n';


    }
    return 0;
}