Cod sursa(job #2910704)

Utilizator MrPuzzleDespa Fabian Stefan MrPuzzle Data 24 iunie 2022 14:41:33
Problema Pascal Scor 30
Compilator cpp-64 Status done
Runda 3_iulie Marime 1.09 kb
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <climits>

#include <ctype.h>

#define MAX 20000000


using namespace std;


//ifstream f("in.in");
//ofstream g("out.out");

ifstream f("pascal.in");
ofstream g("pascal.out");

long long r,d,sol;

long long fact_n_prim_div_d(int n,int d){
    long long div=d;
    long long cnt=0;

    while(div<=n){
        cnt+=n/div;
        div*=d;
    }
    return cnt;
}

long long fact_n_div_d(int n){
    if(d==2||d==3||d==5){
        return fact_n_prim_div_d(n,d);
    }else if(d==4){
        return fact_n_prim_div_d(n,2)/2;
    }else if(d==6){
        return min(fact_n_prim_div_d(n,2),fact_n_prim_div_d(n,3));
    }
}

bool elem_n_div_d(long long n){
    long long a = fact_n_div_d(r);
    long long b = fact_n_div_d(r-n);
    long long c = fact_n_div_d(n);

    if(a>(b+c)){
        return 1;
    }
    return 0;
}

int main(){

    f>>r>>d;

    for(int i=0;i<=r;i++){
        sol+= elem_n_div_d(i);
    }

    g<<sol;

    f.close();
    g.close();
    return 0;
}