Cod sursa(job #2786413)

Utilizator UnknownPercentageBuca Mihnea-Vicentiu UnknownPercentage Data 20 octombrie 2021 21:39:37
Problema Pascal Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>

using namespace std;

inline void Open(const string Name) {
    #ifndef ONLINE_JUDGE
        (void)!freopen((Name + ".in").c_str(), "r", stdin);
        (void)!freopen((Name + ".out").c_str(), "w", stdout);
    #endif
}

int N, d, ans, ans1, ans2;

int nr_div_D(int x, int d) {
    int cnt = 0;
    while(x % d == 0)
        x /= d, cnt++;
    return cnt;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    Open("pascal");

    cin >> N >> d;
    if(d == 2 || d == 3 || d == 5) {
        for(int i = 1;i <= N;i++) {
            ans1 += nr_div_D(N - i + 1, d);
            ans1 -= nr_div_D(i, d);
            ans += (ans1 > 0);
        }
    }

    if(d == 4) {
        for(int i = 1;i <= N;i++) {
            ans1 += nr_div_D(N - i + 1, 2);
            ans1 -= nr_div_D(i, 2);
            ans += (ans1 > 1);
        }
    }

    if(d == 6) {
        for(int i = 1;i <= N;i++) {
            ans1 += nr_div_D(N - i + 1, 2);
            ans1 -= nr_div_D(i, 2);
            ans2 += nr_div_D(N - i + 1, 3);
            ans2 -= nr_div_D(i, 3);
            ans += (ans1 > 0 && ans2 > 0);
        }
    }

    cout << ans;

    return 0;
}