[Homework] Catalan num C Loops
Здравейте,
Според задачата за Catalan число, ентото число не се ли намира като произведение от числата (n+k)/k за стойностите на к от 2 до n.
Toест според мен този фрагмент трябва да дава верния резултат, но при 5 дава 24, а не 42.
int main() {
int n, k;
unsigned long u = 1;;
printf("N>>");
scanf("%d", &n);
for(k=2;k<=n;k++) {
u*=((n+k)/k);
}
printf("%lu", u);
return 0;
}
Здравей,
Благодаря.
Да, да определено 5-тото е 42.
Въпросът е за последната формула, изведена в условието на задачата.
Тя явно служи за по оптимално изчисление.
Проблемът е, че явно аз грешно разписвам формулата програмно или грешно я разчитам.
По-скоро грешно я разчиташ и затова програмата ти я смята грешно. Това главно П са пермутации и е просто съкратен запис, но не можеш да ги смяташ като (n+k)/k
Здравей!
Формулата, която ти ползваш работи, но променливата u трябва да е от тип double и също така трябва да кастнеш делимото или делителя към тип double.
int main() {
int n, k;
double u = 1;;
printf("N>>");
scanf("%d", &n);
for(k=2;k<=n;k++) {
u*=((double)(n+k)/k);
}
printf("%lf", u);
return 0;
}
Да, благодаря, това беше проблемът.