Cod sursa(job #2634668)

Utilizator stefan.popescuPopescu Stefan stefan.popescu Data 11 iulie 2020 22:11:21
Problema Pascal Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("pascal.in");
ofstream out("pascal.out");
inline int nrAparitii(int fact, int val)
{
    int rez=0;
    long long v=val;
    while(v<=fact)
    {
        rez+=fact/v;
        v*=val;
    }
    return rez;
}
int n, d, cnt;
int main()
{
    in>>n>>d;

    if(d==2||d==3||d==5)
    {
        int nr=0;

        for(int i=1; i<=n; i++)
        {
            int val=i;
            while(val>1&&val%d==0) nr++, val/=d;

            val=n-i+1;
            while(val>1&&val%d==0) nr--, val/=d;

            if(nr) cnt++;
        }

    }
    else if(d==4)
    {
        int nr=0;

        for(int i=1; i<=n; i++)
        {
            int val=i;
            while(val>1&&val%2==0) nr++, val/=2;

            val=n-i+1;
            while(val>1&&val%2==0) nr--, val/=2;

            if(nr>=2) cnt++;
        }
    }
    else
    {
        int nr1=0, nr2=0;

        for(int i=1; i<=n; i++)
        {
            int val=i;
            while(val>1&&val%2==0) nr1++, val/=2;
            while(val>1&&val%3==0) nr2++, val/=3;

            val=n-i+1;
            while(val>1&&val%2==0) nr1--, val/=2;
            while(val>1&&val%3==0) nr2--, val/=3;

            if(nr1&&nr2) cnt++;
        }
    }
    out<<cnt;
    return 0;
}