Pagini recente » Cod sursa (job #173313) | Cod sursa (job #685943) | Cod sursa (job #226046) | Cod sursa (job #736620) | Cod sursa (job #827331)
Cod sursa(job #827331)
#include <cstdio>
using namespace std;
int N, Factor[3] = {2, 3, 5}, DPower[3], Solution;
int Pow[3];
inline int GetPower(int X, const int factor) {
int power = 0;
for (; X % factor == 0; ++power, X /= factor);
return power;
}
inline void UpdatePow(const int k) {
for (int i = 0; i < 3; ++i)
Pow[i] += GetPower(N - k + 1, Factor[i]) - GetPower(k, Factor[i]);
}
inline int IsDivisible() {
for (int i = 0; i < 3; ++i)
if (Pow[i] < DPower[i])
return 0;
return 1;
}
void Solve() {
for (int k = 1; k <= N / 2; ++k) {
UpdatePow(k);
Solution += 2*IsDivisible();
}
Solution -= (N % 2 == 0 && IsDivisible());
}
void Read() {
freopen("pascal.in", "r", stdin);
int D; scanf("%d %d", &N, &D);
for (int i = 0; i < 3; ++i)
for (; D % Factor[i] == 0; ++DPower[i], D /= Factor[i]);
}
void Print() {
freopen("pascal.out", "w", stdout);
printf("%d\n", Solution);
}
int main() {
Read();
Solve();
Print();
return 0;
}