Cod sursa(job #2694094)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 8 ianuarie 2021 00:00:07
Problema Pascal Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <bits/stdc++.h>

using namespace std;

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

int r, d, fr[2];

inline void descompune(int r, int *fr){
    if (d == 2 || d == 4 || d == 6){
        int x = 2;
        while (x <= r){
            fr[0] += r / x;
            x *= x;
        }
        if (d == 6){
            x = 3;
            while (x <= r){
                fr[1] += r / x;
                x *= x;
            }
        }
    }
    else{
        int x = d;
        while (x <= r){
            fr[0] += r / x;
            x *= x;
        }
    }
}

int main(){
    fin >> r >> d;
    descompune(r, fr);
    int ans = 0;
    for (int i = 0; i <= r; ++i){
        int fr2[2] = {0, 0};
        int fr3[2] = {0, 0};
        descompune(i, fr2);
        descompune(r - i, fr2);
        if (d == 2 || d == 3 || d == 5){
            if (fr[0] - fr2[0] - fr3[0] > 0){
                ++ans;
            }
        }
        else if (d == 4){
            if (fr[0] - fr2[0] - fr3[0] > 1){
                ++ans;
            }
        }
        else{
            if (fr[0] - fr2[0] - fr3[0] > 0 && fr[1] - fr2[1] - fr3[1] > 0){
                ++ans;
            }
        }
    }
    fout << ans;
    fin.close();
    fout.close();
    return 0;
}