Cod sursa(job #2108284)
| Utilizator | Data | 18 ianuarie 2018 02:09:47 | |
|---|---|---|---|
| Problema | Pascal | Scor | 20 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.49 kb |
#include<fstream>
using namespace std;
ifstream in ("pascal.in");
ofstream out ("pascal.out");
int k,d,fact[6],sol,y,i;
int vec[5000001][3];
int main (void) {
in >> k >> d;
i = k;
for (int i = 1; i <= k; i ++) {
for (int j = 2; j <= 5; j ++) {
if (j == 4) {
continue;
}
y = i;
while (y % j == 0) {
vec[i][j] ++;
y /= j;
}
}
}
for (int j = 0; j <= k/2; j ++) {
if (j > 0) {
if (d == 4) {
if (fact[2] > 1) {
sol +=2;
if (k%2 == 0 && j == k/2) {
sol--;
}
}
}
else
if (d == 6) {
if (fact[2] > 0 && fact[3] > 0) {
sol +=2;
if (k%2 == 0 && j ==k/2) {
sol--;
}
}
}
else {
if (fact[d] > 0) {
sol +=2;
if (k%2 == 0 && j ==k/2) {
sol--;
}
}
}
}
for (int h = 2; h <= 5; h ++) {
if (h == 4) continue;
y = j+1;
fact[h] -= vec[y][h];
y = i-j;
fact[h] += vec[y][h];
}
}
out << sol;
return 0;
}
