Pagini recente » Cod sursa (job #206410) | Cod sursa (job #764928) | Cod sursa (job #2293335)
#include <fstream>
using namespace std;
ifstream fin("pascal.in");
ofstream fout("pascal.out");
int R, D, ans;
int p2[5000005], p3[5000005], p5[5000005];
void Solve2()
{
for(int i = 0; i <= R; i++)
{
int nr2 = p2[R] - p2[R - i] - p2[i];
if(nr2 > 0)
ans++;
}
}
void Solve3()
{
for(int i = 0; i <= R; i++)
{
int nr3 = p3[R] - p3[R - i] - p3[i];
if(nr3 > 0)
ans++;
}
}
void Solve4()
{
for(int i = 0; i <= R; i++)
{
int nr2 = p2[R] - p2[R - i] - p2[i];
if(nr2 > 1)
ans++;
}
}
void Solve5()
{
for(int i = 0; i <= R; i++)
{
int nr5= p5[R] - p5[R - i] - p5[i];
if(nr5 > 0)
ans++;
}
}
void Solve6()
{
for(int i = 0; i <= R; i++)
{
int nr2 = p2[R] - p2[R - i] - p2[i];
int nr3 = p3[R] - p3[R - i] - p3[i];
if(nr2 > 0 && nr3 > 0)
ans++;
}
}
int main()
{
fin >> R >> D;
for(int i = 1; i <= R; i++)
{
if(i % 2 == 0)
p2[i] = p2[i / 2] + 1;
if(i % 3 == 0)
p3[i] = p3[i / 3] + 1;
if(i % 5 == 0)
p5[i] = p5[i / 5] + 1;
}
for(int i = 2; i <= R; i++)
{
p2[i] += p2[i - 1];
p3[i] += p3[i - 1];
p5[i] += p5[i - 1];
}
if(D == 2)
Solve2();
else if(D == 3)
Solve3();
else if(D == 4)
Solve4();
else if(D == 5)
Solve5();
else
Solve6();
fout << ans;
return 0;
}