Pagini recente » Cod sursa (job #2833459) | Cod sursa (job #603372) | Cod sursa (job #1825612) | Cod sursa (job #1657684) | Cod sursa (job #596995)
Cod sursa(job #596995)
#include <fstream>
using namespace std;
const int prim[] = {2, 3, 5};
int R, D;
int times[3], total; // 2, 3 sau 5 (ca divizori primi)
int main()
{
ifstream fin("pascal.in");
ofstream fout("pascal.out");
fin >> R >> D;
for (int i = 1; i < R; ++i)
{
// P[R][i] = R! / i! * (R - i)!, deci P[R][i] = P[R][i - 1] * (R - i + 1) / i
int now1 = R - i + 1, now2 = i;
for (int i = 0; i < 3; ++i)
{
while (now1 % prim[i] == 0)
++times[i], now1 /= prim[i];
while (now2 % prim[i] == 0)
++times[i], now2 /= prim[i];
}
int num = 1;
for (int i = 0; i < 3; ++i)
if (times[i] >= 2) num *= prim[i] * prim[i];
else if (times[i]) num *= prim[i];
if (num % D == 0) ++total;
}
fout << total;
fin.close();
fout.close();
}