Cod sursa(job #2961524)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 6 ianuarie 2023 17:03:47
Problema Pascal Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
using namespace std;

FILE *in = fopen("pascal.in", "r"), *out = fopen("pascal.out", "w");
int R, D, res = 0;
int powers[2];

int factor(int N, int D) {
    int pow = 0;
    while (N >= 1 && N % D == 0){
        N /= D;
        ++pow;
    }
    return pow;
}

int main()
{
    fscanf(in, "%d %d", &R, &D);

    powers[0] = powers[1] = 0;
    for (int j = 1; j <= R; ++j){
        if (D == 2 || D == 3 || D == 5) {
            powers[0] += factor(R - j + 1, D) - factor(j, D);
            if (powers[0])
                ++res;
        }
        else if (D == 6){
            powers[0] += factor(R - j + 1, 2) - factor(j, 2);
            powers[1] += factor(R - j + 1, 3) - factor(j, 3);
            if (powers[0] && powers[1])
                ++res;
        }
        else if (D == 4){
            powers[0] += factor(R - j + 1, 2) - factor(j, 2);
            if (powers[0] >= 2)
                ++res;
        }
    }

    fprintf(out, "%d", res);
    fclose(in);
    fclose(out);
}