Pagini recente » Cod sursa (job #14429) | Cod sursa (job #2789900) | Cod sursa (job #1239588) | Cod sursa (job #2794596) | Cod sursa (job #3157750)
#include <bits/stdc++.h>
#pragma GCC optimize ("fast-math", "unroll-loops")
using namespace std;
ifstream in ("pascal.in");
ofstream out ("pascal.out");
const int NMAX = 5e6;
int prec[3][NMAX + 5];
int prime[3];
int main()
{
int n, d;
in >> n >> d;
int cnt = 0;
if (d % 2 == 0) {
prime[cnt++] = 2;
}
if (d % 3 == 0) {
prime[cnt++] = 3;
}
if (d % 5 == 0) {
prime[cnt++] = 5;
}
for (int i=1; i<=n; i++)
{
int x = i;
for (int j=0; j<cnt; j++)
{
prec[j][i] = prec[j][i-1];
while (x % prime[j] == 0)
x /= prime[j], prec[j][i]++;
}
}
int ans = 0;
if (d == 2)
{
for (int i=1; i<=n; i++)
{
if (prec[0][n] - prec[0][i] - prec[0][n-i] > 0)
ans++;
}
out << ans;
}
else if (d == 3)
{
for (int i=1; i<=n; i++)
{
if (prec[0][n] - prec[0][i] - prec[0][n-i])
ans++;
}
out << ans;
}
else if (d == 5)
{
for (int i=1; i<=n; i++)
{
if (prec[0][n] - prec[0][i] - prec[0][n-i])
ans++;
}
out << ans;
}
else if (d == 4)
{
for (int i=1; i<=n; i++)
{
if (prec[0][n] - prec[0][i] - prec[0][n-i] > 1)
ans++;
}
out << ans;
}
else
{
for (int i=1; i<=n; i++)
{
if (prec[0][n] - prec[0][i] - prec[0][n-i] && prec[1][n] - prec[1][i] - prec[1][n-i])
ans++;
}
out << ans;
}
return 0;
}