Pagini recente » Cod sursa (job #2655150) | Cod sursa (job #1329475) | Cod sursa (job #1682005) | Cod sursa (job #2846873) | Cod sursa (job #2836159)
#include <fstream>
using namespace std;
const int dim = 5000003;
int p1[dim], p2[dim];
int d, ans, i, n, j;
ifstream f("pascal.in");
ofstream g("pascal.out");
inline void calcul(const int val, int v[]);
int main()
{
f >> n >> d;
switch (d)
{
case 2:
calcul(d, p1);
for (i = 1; i < n; ++i)
if (p1[n] - p1[i] - p1[n - i]) ++ans;
break;
case 3:
calcul(d, p1);
for (i = 1; i < n; ++i)
if (p1[n] - p1[i] - p1[n - i]) ++ans;
break;
case 5:
calcul(d, p1);
for (i = 1; i < n; ++i)
if (p1[n] - p1[i] - p1[n - i]) ++ans;
break;
case 4:
calcul(2, p1);
for (i = 1; i < n; ++i)
if (p1[n] - p1[i] - p1[n - i] > 1) ++ans;
break;
default:
calcul(2, p1);
calcul(3, p2);
for (i = 1; i < n; ++i)
if (p1[n] - p1[i] - p1[n - i] && p2[n] - p2[i] - p2[n - i]) ++ans;
break;
}
g << ans;
}
inline void calcul(const int val, int v[])
{
v[0] = 0;
for (i = val; i <= n; i *= val)
for (j = i; j <= n; j += i) ++v[j];
for (i = 1; i <= n; ++i) v[i] += v[i - 1];
}