Cod sursa(job #1561239)

Utilizator SzymonSidorSzymonSidor SzymonSidor Data 3 ianuarie 2016 20:09:46
Problema Pascal Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <algorithm>
#include <stdio.h>
#include <iostream>
#include <fstream>

using namespace std;

int divs[7] = {0, 0, 2, 3, 2, 5, 2};
int n, d, apar, apar2;

int addMult(int x, int sign) {
    int exp = 0;
    for (; x % divs[d] == 0; exp++, x /= divs[d]);
    apar += sign * exp;
    
    if (d == 6) {
        int exp2 = 0;
        for (; x % 3 == 0; exp2++, x /= 3);
        apar2 += sign * exp2;
    }
}

int main() {
    ifstream cin("pascal.in");
    freopen("pascal.out", "w", stdout);

    cin >> n >> d;
    int sol = 0;
    for (int i = 1, j = n; j; i++, j--) {
        addMult(j, 1);
        addMult(i, -1);

        if (d == 4)
            sol += (apar > 1);
        else if (d == 6)
            sol += (apar && apar2);
        else sol += (bool) apar;
    }

    printf("%d\n", sol);

    return 0;
}