Cod sursa(job #2910888)

Utilizator divadddDavid Curca divaddd Data 25 iunie 2022 16:18:27
Problema Pascal Scor 10
Compilator cpp-64 Status done
Runda 3_iulie Marime 1.18 kb
#include <iostream>
#include <fstream>
#define MAX 5000002
using namespace std;
int r,n,d[MAX],t[MAX],c[MAX];

ifstream fin("pascal.in");
ofstream fout("pascal.out");

int main()
{
    /// legendre merge greu rau
    fin >> r >> n;
    for(int i = 2; i <= r; i++){
        if(i%2 == 0){
            d[i] = d[i / 2] + 1;
        }
        if(i%3 == 0){
            t[i] = t[i / 3] + 1;
        }
        if(i%5 == 0){
            c[i] = c[i / 5] + 1;
        }
    }
    for(int i = 2; i <= r; i++) {
        d[i] += d[i - 1];
        t[i] += t[i - 1];
        c[i] += c[i - 1];
    }
    int ans = 0;
    int doi = 0, trei = 0, cinci = 0;
    for(int i = 0; i <= r; i++){
        /// i!/((i-j)!*j!)
        doi += d[n-i+1]-d[i];
        trei += t[n-i+1]-t[i];
        cinci += c[n-i+1]-c[i];
        if(n == 2){
            if(doi >= 1){ ans++; }
        }else if(n == 3){
            if(trei >= 1){ ans++; }
        }else if(n == 4){
            if(doi >= 2){ ans++; }
        }else if(n == 5){
            if(cinci >= 2){ ans++; }
        }else if(n == 6){
            if(doi >= 1 && trei >= 1){ ans++; }
        }
    }
    fout << ans;
    return 0;
}