Cod sursa(job #3154654)

Utilizator catalinmarincatalinmarin catalinmarin Data 5 octombrie 2023 15:19:59
Problema Pascal Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
short p2[5000005] = {0};
short p2fac[5000005] = {0};
short p3[5000005] = {0};
short p3fac[5000005] = {0};
short p5[5000005] = {0};
short p5fac[5000005] = {0};
int main(){
    int contor = 0;
    int rand, d;
    fin >> rand >> d;
    for (int i = 1; i <= 14; i++){
        if (i % 2 == 0)
            p2[i] = p2[i / 2] + 1;
        if (i % 3 == 0)
            p3[i] = p3[i / 3] + 1;
        if (i % 5 == 0)
            p5[i] = p5[i / 5] + 1;
        p2fac[i] = p2fac[i - 1] + p2[i];
        p3fac[i] = p3fac[i - 1] + p3[i];
        p5fac[i] = p5fac[i - 1] + p5[i];
    }
    for (int i = 0; i < rand; i++){
        if (d == 2){
            if (p2fac[rand] >= p2fac[i] + p2fac[rand - i] + 1)
                contor++;
        }
        if (d == 3){
            if (p3fac[rand] >= p3fac[i] + p3fac[rand - i] + 1)
                contor++;
        }
        if (d == 4){
            if (p2fac[rand] >= p2fac[i] + p2fac[rand - i] + 2)
                contor++;
        }
        if (d == 5){
            if (p5fac[rand] >= p5fac[i] + p5fac[rand - i] + 1)
                contor++;
        }
        if (d == 6){
            if ((p3fac[rand] >= p3fac[i] + p3fac[rand - i] + 1) && p2fac[rand] >= p2fac[i] + p2fac[rand - i] + 1)
                contor++;
        }
    }
    fout << contor;
    return 0;
}