Cod sursa(job #2090907)

Utilizator rares_ciocieaRares Andrei Ciociea rares_ciociea Data 18 decembrie 2017 20:30:53
Problema Pascal Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include<fstream>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");

int legendre(int n,int p)
{
    int exp=0,nr=p;
    while(n/nr)
    {
        exp+=n/nr;
        nr*=p;
    }
    return exp;
}

int main()
{
    int r,d,i,j,cnt=0,ok=0,leg;
    in>>r>>d;

    for(i=0;i<r/2;i++)
    {

        if(d==2)
            if(legendre(r,2)-legendre(r-i,2)-legendre(i,2))
                ok++;
        if(d==3)
            if(legendre(r,3)-legendre(r-i,3)-legendre(i,3))
                ok++;
        if(d==4)
            if(legendre(r,2)-legendre(r-i,2)-legendre(i,2)>1)
                ok++;
        if(d==5)
            if(legendre(r,5)-legendre(r-i,5)-legendre(i,5))
                ok++;
        if(d==6)
            if(legendre(r,2)-legendre(r-i,2)-legendre(i,2) && legendre(r,3)-legendre(r-i,3)-legendre(i,3))
                ok++;
    }
    if(r%2==0)
    {
        i=r/2;
        if(d==2)
            if(legendre(i,2)-legendre(r-i,2)-legendre(i,2))
                cnt++;
        if(d==3)
            if(legendre(r,3)-legendre(r-i,3)-legendre(i,3))
                cnt++;
        if(d==4)
            if(legendre(i,2)-legendre(r-i,2)-legendre(i,2)>1)
                cnt++;
        if(d==5)
            if(legendre(r,5)-legendre(r-i,5)-legendre(i,5))
                cnt++;
        if(d==6)
            if(legendre(i,2)-legendre(r-i,2)-legendre(i,2) && legendre(r,3)-legendre(r-i,3)-legendre(i,3))
                cnt++;
    }
    out<<ok*2+cnt;
    return 0;
}