Cod sursa(job #2634674)

Utilizator stefan.popescuPopescu Stefan stefan.popescu Data 11 iulie 2020 22:19:25
Problema Pascal Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 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 t1=nrAparitii(n, d);

        for(int i=1; i<=(n-1)/2; i++)
            if(t1-nrAparitii(i, d)-nrAparitii(n-i, d)) cnt+=2;
        if((n-1)%2)
            if(t1-nrAparitii(n/2, d)-nrAparitii(n-n/2, d)) cnt++;
    }
    else if(d==4)
    {
        int t1=nrAparitii(n, 2);

        for(int i=1; i<=(n-1)/2; i++)
            if(t1-nrAparitii(i, 2)-nrAparitii(n-i, 2)>=2) cnt+=2;
        if((n-1)%2)
            if(t1-nrAparitii(n/2, 2)-nrAparitii(n-n/2, 2)>=2) cnt++;
    }
    else
    {
        int t1=nrAparitii(n, 2);
        int t2=nrAparitii(n, 3);

        for(int i=1; i<=(n-1)/2; i++)
            if(t1-nrAparitii(i, 2)-nrAparitii(n-i, 2) && t2-nrAparitii(i, 3)-nrAparitii(n-i, 3)) cnt+=2;
        if((n-1)%2)
            if(t1-nrAparitii(n/2, 2)-nrAparitii(n-n/2, 2) && t2-nrAparitii(n/2, 3)-nrAparitii(n-n/2, 3)) cnt++;
    }
    out<<cnt;
    return 0;
}