Cod sursa(job #2910707)

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

#include <ctype.h>

#define MAX 5000000


using namespace std;


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

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

int n,dd,sol=0;

int d[MAX],t[MAX],c[MAX];

int calc(int n,int dd){
    int div2=dd;
    int cnt=0;

    while(div2<=n){
        cnt+=n/div2;
        div2*=dd;
    }
    return cnt;
}


int main(){

    f>>n>>dd;

    ///n / 2 incearca
    for(int i=1;i<=n;i++){

        d[i] = calc(i,2);
        t[i] = calc(i,3);
        c[i] = calc(i,5);
    }

    for(int j=1;j<n;j++){
        if(dd==2){
            int aux = d[n] - d[j] - d[n-j];
            if(aux>=1){
                sol++;
            }
        }else if(dd==3){
            int aux = t[n] - t[j] - t[n-j];
            if(aux>=1){
                sol++;
            }
        }else if(dd==5){
            int aux = c[n] - c[j] - c[n-j];
            if(aux>=1){
                sol++;
            }
        }else if(dd==4){
            int aux = d[n] - d[j] - d[n-j];
            if(aux>=2){
                sol++;
            }
        }else if(dd==6){
            int aux1 = d[n] - d[j] - d[n-j];
            int aux2 = t[n] - t[j] - t[n-j];
            if(min(aux1,aux2)>=1){
                sol++;
            }
        }
    }

    g<<sol;

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