Pagini recente » Cod sursa (job #1911450) | Cod sursa (job #284501) | Cod sursa (job #2718540) | Cod sursa (job #1690829) | Cod sursa (job #2195826)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("pascal.in");
ofstream out("pascal.out");
int legendre(int n, int k) {
int s = 0, exp = k;
while(exp <= n) {
s += n/exp;
exp *= k;
}
return s;
}
int main()
{
int r, d, s = 0, ap[2];
in >> r >> d;
if(d == 6) {
ap[0] = legendre(r, 2);
ap[1] = legendre(r, 3);
for(int j = 1, n = r/2; j <= n; j++) {
if(ap[0] - legendre(j, 2) - legendre(r-j, 2) > 0 && ap[1] - legendre(j, 3) - legendre(r-j, 3) > 0)
s++;
}
s *= 2;
if(r%2 == 0) s--;
} else if (d == 4) {
ap[0] = legendre(r, 2);
for(int j = 1, n = r/2; j <= n; j++) {
if(ap[0] - legendre(j, 2) - legendre(r-j, 2) > 1)
s++;
}
s *= 2;
if(r%2 == 0) s--;
} else {
ap[0] = legendre(r, d);
for(int j = 1, n = r/2; j <= n; j++) {
if(ap[0] - legendre(j, d) - legendre(r-j, d) > 0)
s++;
}
s *= 2;
if(r%2 == 0) s--;
}
out << s;
return 0;
}