Cod sursa(job #2646977)

Utilizator DenisONIcBanu Denis Andrei DenisONIc Data 2 septembrie 2020 16:21:54
Problema Pascal Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;


int n,d,fr[6],ans,r[] = {2,3,5}, r3[] = {8, 27, 125};


static inline void add(int x, int v){
    while (x % 2 == 0){
        x /= 2;
        fr[2] += v;
    }
    while (x % 3 == 0){
        x /= 3;
        fr[3] += v;
    }
    while (x % 5 == 0){
        x /= 5;
        fr[5] += v;
    }

}

int main()
{
    freopen("pascal.in","r",stdin);
    freopen("pascal.out","w",stdout);

    cin >> n >> d;

    for (int i=1;i<(n+1)/2;i++){
        add(n-i+1, 1);
        add(i, -1);

        if (d == 6 && fr[2] && fr[3]) ans += 2;
        else if (d == 4 && fr[2] > 1) ans += 2;
        else if (fr[d]) ans += 2;
    }

    if (n%2==0){
        add(n-n/2+1, 1);
        add(n/2, -1);

        if (d == 6 && fr[2] && fr[3]) ans++;
        else if (d == 4 && fr[2] > 1) ans++;
        else if (fr[d]) ans++;
    }

    cout << ans << '\n';

    return 0;
}