Pagini recente » Cod sursa (job #901782) | Cod sursa (job #1926243) | Cod sursa (job #1302479) | Cod sursa (job #464312) | Cod sursa (job #586019)
Cod sursa(job #586019)
#include <stdio.h>
#define MAX_N 3500
int cmmdc, n, m;
int c[MAX_N], vine[MAX_N];
inline int cmmmdc(int a, int b) {
int r = 0;
while (a % b != 0) {
r = a % b;
a = b;
b = r;
}
return b;
}
inline int cmmmc(int x, int y) {
int aux = cmmmdc(x, y);
return x * y / aux;
}
void write(int x) {
if (x == 0) {
printf("\n");
return;
}
printf("%d ", (x - vine[x]) * cmmdc);
write(vine[x]);
}
int main() {
freopen("nummst.in", "r", stdin);
freopen("nummst.out", "w", stdout);
scanf("%d", &n);
for (int i = 2; i <= n; i++)
if (n % i == 0) {
cmmdc = n / i;
m = i;
break;
}
for (int i = 1; i < m; i++) {
c[i] = i;
vine[i] = 0;
}
for (int i = 1; i <= m; i++)
for (int j = 1; j < i; j++) {
int val = cmmmc(c[j], i - j);
if (val > c[i]) {
c[i] = val;
vine[i] = j;
}
}
write(m);
return 0;
}