Cod sursa(job #1651950)

Utilizator BrandonChris Luntraru Brandon Data 14 martie 2016 11:53:24
Problema Pascal Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>

using namespace std;

ifstream cin("pascal.in");
ofstream cout("pascal.out");

int divide2_fact[5000005], divide3_fact[5000005], divide5_fact[5000005], line, divide, total_divide2, total_divide3, total_divide5, ans;

int main() {
    cin >> line >> divide;

    for(int i = 2; i <= line; ++i) {
        if(i % 2 == 0) {
            divide2_fact[i] = divide2_fact[i / 2] + 1;
        }

        if(i % 3 == 0) {
            divide3_fact[i] = divide3_fact[i / 3] + 1;
        }

        if(i % 5 == 0) {
            divide5_fact[i] = divide5_fact[i / 5] + 1;
        }
    }

    for(int i = 1; i <= line; ++i) {
        total_divide2 += divide2_fact[line - i + 1] - divide2_fact[i];
        total_divide3 += divide3_fact[line - i + 1] - divide3_fact[i];
        total_divide5 += divide5_fact[line - i + 1] - divide5_fact[i];

        if(divide == 2) {
            ans += (total_divide2 >= 1);
        }
        else if(divide == 3) {
            ans += (total_divide3 >= 1);
        }
        else if(divide == 4) {
            ans += (total_divide2 >= 2);
        }
        else if(divide == 5) {
            ans += (total_divide5 >= 1);
        }
        else {
            ans += (total_divide2 >= 1 and total_divide3 >= 1);
        }
    }

    cout << ans << '\n';
    return 0;
}