Cod sursa(job #597300)

Utilizator mihai995mihai995 mihai995 Data 21 iunie 2011 18:36:11
Problema Principiul includerii si excluderii Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
using namespace std;

const int N=16;
long long d[N],a,b,rez;

ifstream in("pinex.in");
ofstream out("pinex.out");

void bkt(int p,int val)
{
    if (p==d[0]+1)
    {
        rez+=a/val;
        return;
    }
    bkt(p+1,val);
    bkt(p+1,val*d[p]);
}

int main()
{
    long long t,i;
    in>>t;
    while (t--)
    {
        in>>a>>b;
        rez=0;
        d[0]=0;
        for (i=2;i*i<=b;i++)
            if (b%i==0)
            {
                d[++d[0]]=-i;
                while (b%i==0)
                    b/=i;
            }
        if (b!=1)
            d[++d[0]]=-b;
        bkt(1,1);
        out<<rez<<"\n";
    }
    return 0;
}