Cod sursa(job #3192929)

Utilizator rastervcrastervc rastervc Data 13 ianuarie 2024 15:41:56
Problema Pascal Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>

using namespace std;

ifstream fin("pascal.in");
ofstream fout("pascal.out");

constexpr int LIM = 5000005;
int n, d, s1[LIM], s2[LIM];

inline int sum(int x, int p) {
    int S = 0;
    while (x) {
        S += x % p;
        x /= p;
    }
    return S;
}

int main() {
    fin >> n >> d;

    int cnt = 0;
    if (d == 2 || d == 3 || d == 5) {
        for (int i = 0; i <= n; ++i)
            s1[i] = sum(i, d);
        for (int i = 0; i <= n; ++i)
            if ((s1[i] + s1[n - i] - s1[n]) / (d - 1) >= 1) ++cnt;
    } else if (d == 4) {
        for (int i = 0; i <= n; ++i)
            s1[i] = sum(i, 2);
        for (int i = 0; i <= n; ++i)
            if (s1[i] + s1[n - i] - s1[n] >= 2) ++cnt;
    } else {
        for (int i = 0; i <= n; ++i)
            s1[i] = sum(i, 2), s2[i] = sum(i, 3);
        for (int i = 0; i <= n; ++i)
            if (s1[i] + s1[n - i] - s1[n] >= 1 &&
                (s2[i] + s2[n - i] - s2[n]) / 2 >= 1) ++cnt;
    }

    fout << cnt;

    fin.close();
    fout.close();
    return 0;
}