Cod sursa(job #2764476)

Utilizator DragosC1Dragos DragosC1 Data 21 iulie 2021 00:16:46
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 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, p5, div2, div3, div5, nr;

    div2 = div3 = div5 = 0;
    while (D % 2 == 0) 
        div2++, D /= 2;
    while (D % 3 == 0)
        div3++, D /= 3;
    while (D % 5 == 0)
        div5++, D /= 5;

    p2 = p3 = p5 = 0;
    for (i = 1; i < (R + 2) / 2; i++) {

        nr = R - i + 1;
        while (nr % 2 == 0)
            p2++, nr /= 2;
        while (nr % 3 == 0)
            p3++, nr /= 3;
        while (nr % 5 == 0)
            p5++, nr /= 5;
        
        nr = i;
        while (nr % 2 == 0)
            p2--, nr /= 2;
        while (nr % 3 == 0)
            p3--, nr /= 3;
        while (nr % 5 == 0)
            p5--, nr /= 5;
            
        if (p2 >= div2 && p3 >= div3 && p5 >= div5)
            rez++;
    }
    rez *= 2;
    if (R % 2 == 0)
        rez--;
}

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

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