Cod sursa(job #2911163)

Utilizator AxicaVirtosu Alexandra Mihaela Axica Data 27 iunie 2022 12:43:59
Problema Pascal Scor 50
Compilator cpp-64 Status done
Runda 3_iulie Marime 1.02 kb
#include <fstream>
#define NMAX 5000000
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");

int r, d, D[NMAX+1], T[NMAX+1], C[NMAX+1], doi, trei, cinci;
int nr;
int calcul(int n, int prim)
{
    ///calculeaza putearea la care apare nr prim in n!
    int nr=0, p=prim;
    while(p<=n)
    {
        nr+=n/p;
        p*=prim;
    }
    return nr;
}
int main()
{
    fin>>r>>d;
    for(int i=1; i<=r; i++)
    {
        D[i]=calcul(i, 2);
        T[i]=calcul(i, 3);
        C[i]=calcul(i, 5);
   }
   for(int i=1; i<=r-1; i++)
   {
        ///calculez la ce putere apar 2, 3 si 5 in nr r!/i!(r-i)!
        doi=D[r]-D[i]-D[r-i];
        trei=T[r]-T[i]-T[r-i];
        cinci=C[r]-C[i]-C[r-i];
        if(d==2 && doi)
            nr++;
        if(d==3 && trei)
            nr++;
        if(d==5 && cinci)
            nr++;
        if(d==4 && doi>=2)
            nr++;
        if(d==6 && doi && trei )
            nr++;
   }
   fout<<nr;
   ///O(rlogr)

    return 0;
}