Cod sursa(job #1756617)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 13 septembrie 2016 10:25:44
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.96 kb
#include<bits/stdc++.h>
using namespace std;
int n,d,p,p2,p21,p22,p23,mid,q21,q22,q23;
int pw(int x,int y)
{
    int p=0;
    while (!(x%y))
    {
        p++;
        x/=y;
    }
    return p;
}
int main()
{
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&d);
    if (d==2 || d==3 || d==5)
    {
        p=d;
        p2=0;
        while (p<=n)
        {
            p2=p2+(n/p);
           p*=d;
        }
        p21=p2;
        p22=p2;
        p23=0;
        mid=(n/2);
        int nr=0;
        for(int j=1;j<=mid;j++)
        {
            p22-=pw(n-j+1,d);
            p23+=pw(j,d);
            if ((p21-p22-p23)>0) nr+=2;
        }
        if (!(n%2)) nr--;
        printf("%d\n",nr);
    }
        else
    if (d==4)
    {
        p=2;
        p2=0;
        while (p<=n)
        {
            p2=p2+(n/p);
           p*=2;
        }
        p21=p2;
        p22=p2;
        p23=0;
        mid=(n/2);
        int nr=0;
        for(int j=1;j<=mid;j++)
        {
            p22-=pw(n-j+1,2);
            p23+=pw(j,2);
            if ((p21-p22-p23)>1) nr+=2;
        }
        if (!(n%2)) nr--;
        printf("%d\n",nr);
    }
        else
    if (d==6)
    {
         p=2;
        p2=0;
        while (p<=n)
        {
            p2=p2+(n/p);
           p*=2;
        }
        p21=p2;
        p22=p2;
        p23=0;
        //
         p=3;
        p2=0;
        while (p<=n)
        {
            p2=p2+(n/p);
           p*=3;
        }
        q21=p2;
        q22=p2;
        q23=0;
        //
        mid=(n/2);
        int nr=0;
        for(int j=1;j<=mid;j++)
        {
            p22-=pw(n-j+1,2);
            p23+=pw(j,2);
            q22-=pw(n-j+1,3);
            q23+=pw(j,3);
            if ((p21-p22-p23)>0 && (q21-q22-q23)>0) nr+=2;
        }
        if (!(n%2)) nr--;
        printf("%d\n",nr);
    }
    return 0;
}