Cod sursa(job #2483019)

Utilizator AlexArdeleanAlexandru Ardelean AlexArdelean Data 29 octombrie 2019 10:11:22
Problema Pascal Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>

using namespace std;

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

const int N = 5e6 + 7;

short int vp[3][N];

int main()
{
    int n, d;
    fin >> n >> d;
    for (int i = 0; i <= n; ++i) {
        int _i(i);
        if (d % 2 == 0) {
            while (_i) {
                _i /= 2;
                vp[0][i] += _i;
            }
            _i = i;
        }
        if (d % 3 == 0) {
            while (_i) {
                _i /= 3;
                vp[1][i] += _i;
            }
            _i = i;
        }
        if (d % 5 == 0) {
            while (_i) {
                _i /= 5;
                vp[2][i] += _i;
            }
        }
    }
    int ans(0);
    for (int i = 0; i <= n; ++i) {
        if (d == 2)
            ans += (vp[0][n] - vp[0][i] - vp[0][n - i] > 0);
        if (d == 3)
            ans += (vp[1][n] - vp[1][i] - vp[1][n - i] > 0);
        if (d == 4)
            ans += (vp[0][n] - vp[0][i] - vp[0][n - i] > 1);
        if (d == 5)
            ans += (vp[2][n] - vp[2][i] - vp[2][n - i] > 0);
        if (d == 6)
            ans += ((vp[0][n] - vp[0][i] - vp[0][n - i] > 0) & (vp[1][n] - vp[1][i] - vp[1][n - i] > 0));
    }
    fout << ans;
    return 0;
}