Cod sursa(job #2764472)

Utilizator DragosC1Dragos DragosC1 Data 21 iulie 2021 00:02:00
Problema Pascal Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <fstream>
#include <iostream>
using namespace std;

int R, D;
int rez;

void read() {
    ifstream f("pascal.in");
    f >> R >> D;
    f.close();
}

void solve() {

    // randurile 0 si 1 nu pot avea elemente divizibile cu 2, 3, 4, 5, 6 => afisam 0
    if (R == 0 || R == 1)
        return;
    
    int i, p2, p3, nr1, nr2, nr3, put, ok;
    for (i = 1; i <= R; i++) {
        p2 = 0, p3 = 0;
        nr1 = R, nr2 = i - 1, nr3 = R - i + 1, put = 2;
        while (nr1 >= put || nr2 >= put || nr3 >= put) {
            p2 += nr1 / put;
            p2 -= nr2 / put;
            p2 -= nr3 / put;
            put *= 2;
        }
        nr1 = R, nr2 = i - 1, nr3 = R - i + 1, put = 3;
        while (nr1 >= put || nr2 >= put || nr3 >= put) {
            p2 += nr1 / put;
            p2 -= nr2 / put;
            p2 -= nr3 / put;
            put *= 3;
        }
        ok = 1;
        if (D % 2 == 0 && p2 < 1)
            ok = 0;
        if (D % 4 == 0 && p2 < 2)
            ok = 0;
        if (D % 3 == 0 && p3 < 1)
            ok = 0;

        rez += ok;
    }

}

void output() {
    ofstream g("pascal.out");
    g << rez;
    g.close();
}

int main() {
    read();
    solve();
    output();
    return 0;
}