Pagini recente » Cod sursa (job #13717) | Cod sursa (job #310320) | Cod sursa (job #1737899) | Cod sursa (job #1630374) | Cod sursa (job #2217831)
#include <bits/stdc++.h>
#define RM 5000002
using namespace std;
int r, m, k;
int f2[RM];
int f3[RM];
int f5[RM];
int exp(int n, int p)
{
if(p == 2)
return f2[n];
else if(p == 3)
return f3[n];
else if(p == 4)
return f2[n] / 2;
else if(p == 5)
return f5[n];
else
return min(f2[n], f3[n]);
}
int main()
{
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
fin >> r >> m;
if(m % 2 == 0)
{
for(int i = 1; i <= r; i++)
if(i % 2)
f2[i] = 0;
else
f2[i] = f2[i / 2] + 1;
for(int i = 0; i <= r; i++)
f2[i] += f2[i - 1];
}
if(m % 3 == 0)
{
for(int i = 1; i <= r; i++)
if(i % 3)
f3[i] = 0;
else
f3[i] = f3[i / 3] + 1;
for(int i = 0; i <= r; i++)
f3[i] += f3[i - 1];
}
if(m % 5 == 0)
{
for(int i = 1; i <= r; i++)
if(i % 5)
f5[i] = 0;
else
f5[i] = f5[i / 5] + 1;
for(int i = 0; i <= r; i++)
f5[i] += f5[i - 1];
}
for(int i = 0; i <= r; i++)
if(exp(r, m) > exp(i, m) + exp(r - i, m))
k++;
fout << k << "\n";
return 0;
}