Pagini recente » Cod sursa (job #945356) | Cod sursa (job #1551994) | Cod sursa (job #3039167) | Cod sursa (job #379197) | Cod sursa (job #1059100)
#include <fstream>
using namespace std;
ifstream fin ("pascal.in");
ofstream fout ("pascal.out");
int n, d;
int Count (int x, int d) {
int sol = 0;
while (x % d == 0) {
sol++;
x /= d;
}
return sol;
}
int Get_for_prime(int d) {
int sol = 0, k = 0;
for (int i = 1; i <= n / 2; ++i) {
sol += Count (n + 1 - i, d) - Count(i, d);
if (sol) k += 2;
}
if (sol && !(n & 1))
k--;
return k;
}
int Get_for_4() {
int sol = 0, k = 0;
for (int i = 1; i <= n / 2; ++i) {
sol += Count (n + 1 - i, 2) - Count(i, d);
if (sol > 1)
k += 2;
}
if (sol > 1 && !(n & 1))
k--;
return k;
}
int Get_for_6() {
int sol1 = 0, sol2 = 0, k = 0;
for (int i = 1; i <= n / 2; ++i) {
sol1 += Count (n + 1 - i, 2) - Count(i, 2);
sol2 += Count (n + 1 - i, 3) - Count(i, 3);
if (sol1 && sol2)
k += 2;
}
if (sol1 && sol2 && !(n & 1))
k--;
return k;
}
int Get_for (int k) {
if (k == 2 || k == 3 || k == 5)
return Get_for_prime (k);
if (k == 4)
return Get_for_4();
return Get_for_6();
}
int main() {
fin >> n >> d;
fout << Get_for(d);
}