Pagini recente » Cod sursa (job #1082404) | Cod sursa (job #572377) | Cod sursa (job #1445022) | Cod sursa (job #2879704) | Cod sursa (job #927911)
Cod sursa(job #927911)
#include <fstream>
using namespace std;
int R, D;
int d0, d1, d2;
int total; // 2, 3 sau 5 (ca divizori primi)
char p0[5000002], p1[5000002], p2[5000002];
int main()
{
ifstream fin("pascal.in");
ofstream fout("pascal.out");
fin >> R >> D;
for (int i = 1; i <= 5000000; ++i)
{
if (i % 2 == 0)
{
p0[i] = p0[i / 2] + 1;
p1[i] = p1[i / 2];
p2[i] = p2[i / 2];
}
else if (i % 3 == 0)
{
p0[i] = p0[i / 3];
p1[i] = p1[i / 3] + 1;
p2[i] = p2[i / 3];
}
else if (i % 5 == 0)
{
p0[i] = p0[i / 5];
p1[i] = p1[i / 5];
p2[i] = p2[i / 5] + 1;
}
}
for (int i = 1; i < R; ++i)
{
// R! / i! * (R - i)!
d0 += p0[R - i + 1] - p0[i];
d1 += p1[R - i + 1] - p1[i];
d2 += p2[R - i + 1] - p2[i];
if (D == 2 && d0) ++total;
if (D == 3 && d1) ++total;
if (D == 4 && d0 >= 2) ++total;
if (D == 5 && d2) ++total;
if (D == 6 && d0 && d1) ++total;
}
fout << total;
fin.close();
fout.close();
}