Cod sursa(job #2816633)

Utilizator SerbaP123Popescu Serban SerbaP123 Data 11 decembrie 2021 19:55:41
Problema Pascal Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>
using namespace std;

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

long long n, m;

int exponent(long long n, long long p){
    int ans = 0;
    while(p <= n){
        ans += n / p;
        p = p * p;
    }
    return ans;
}

bool prim(long long n){
    return n == 2 || n == 3 || n == 5;
}

int main(){
    cin >> n >> m;
    long long ans = 0;
    for(int i = 1; i < n; ++i){
        if(prim(m)){
            int a = exponent(n, m);
            int b = exponent(n - i, m);
            int c = exponent(i, m);
            if(a - (b + c) >= 1){
                ans++;
            }
        }
        else if(m == 4){
            int a = exponent(n, 2);
            int b = exponent(n - i, 2);
            int c = exponent(i, 2);
            if(a - (b + c) >= 2){
                ans++;
            }
        }
        else if(m == 6){
            int a2 = exponent(n, 2);
            int b2 = exponent(n - i, 2);
            int c2 = exponent(i, 2);
            int a3 = exponent(n, 3);
            int b3 = exponent(n - i, 3);
            int c3 = exponent(i, 3);
            if(a2 - (b2 + c2) >= 1 && a3 - (b3 + c3) >= 1){
                ans++;
            }
        }
    }
    cout << ans;
    return 0;
}