domingo, 24 de mayo de 2009

alguna idea?

Como ya dije en el blog de nuestro amigo Roberto, hace muchos dias que no me he podido pasar por aquí y que no he puesto entrada alguna. Ahora que he retomado ésto de los blogs, me he planteado qué entrada debería poner y al no tener otra idea mejor, he decidido plantear un problema que encontré hace poco en una web rusa donde hay problemas de programacion (aun siendo un problema de programación, la respuesta que se espera es un razonamiento que permita obtener la solución de una manera eficiente, y no el código o el programa que resuelva el problema).

Tengo que indicar de antemano que aunque tengo una idea para resolver el problema, aun no he comprovado el buen funcionamiento de ésta. Así que éste problema, más que ser un concurso, es un inicio de debate para solucionarlo entre todo aquel que quiera participar.

Enunciado del problema:
Ruslan tiene K amigos. Y todos ellos cumplen años mañana. Ayer Ruslan compró N álbums de fotos y los quiere repartir entre sus amigos. Por supuesto que no puede dar menos de un álbum de fotos a qualquiera de sus amigos (puesto que supondria no dar ningun regalo a alguno de los amigos). Se pide calcular cuantas maneras posibles hay de hacerlo.

Observaciones: Todos los álbums de fotos son diferentes. Dos distribuciones son consideradas la misma si solo difieren por el orden de los álbums regalados a una persona o las personas que reciben los regalos. 

Ejemplo:
Sea K = 2 y N = 3.
A los álbums de fotos los llamaremos A, B y C. Las posibles maneras de distribuir los álbums son:
Amigo 1: A;      Amigo 2: B, C;
Amigo 1: B;      Amigo 2: A, C;
Amigo 1: C;      Amigo 2: A, B;

Las distribuciones
Amigo 1: A;      Amigo 2: B, C;     y 
Amigo 1: A;      Amigo 2: C, B;    son consideradas la misma, igual que las distribuciones

Amigo 1: A;      Amigo 2: B, C;     y 
Amigo 1: C, B;  Amigo 2: A; 




Encontrareis el problema en la web: http://acm.sgu.ru/problem.php?contest=0&problem=441