Cod sursa(job #1651947)

Utilizator BrandonChris Luntraru Brandon Data 14 martie 2016 11:50:55
Problema Pascal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>

using namespace std;

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

int div2_fact[5000005], div3_fact[5000005], div5_fact[5000005], line, div, total_div2, total_div3, total_div5, ans;

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

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

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

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

    for(int i = 1; i <= line; ++i) {
        total_div2 += div2_fact[line - i + 1] - div2_fact[i];
        total_div3 += div3_fact[line - i + 1] - div3_fact[i];
        total_div5 += div5_fact[line - i + 1] - div5_fact[i];

        if(div == 2) {
            ans += (total_div2 >= 1);
        }
        else if(div == 3) {
            ans += (total_div3 >= 1);
        }
        else if(div == 4) {
            ans += (total_div2 >= 2);
        }
        else if(div == 5) {
            ans += (total_div5 >= 1);
        }
        else {
            ans += (total_div2 >= 1 and total_div3 >= 1);
        }
    }

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