Inspirado en /puzzling//q/626
En tus aventuras llegas a una serie de 7 puentes que tienes que cruzar. Debajo de cada puente vive un troll. Para cruzar el puente, primero debes darle al troll una cantidad de pasteles como porcentaje del número de pasteles que llevas. Debido a que estos son trolls amables, te devolverán una cierta cantidad de pasteles.
Al comienzo de cada día, el rey troll local establece el porcentaje de impuesto a la torta que cada viajero debe pagar, y el reembolso de la torta troll: la cantidad de tortas que cada troll debe devolver a los viajeros.
Su trabajo es calcular la cantidad mínima de pasteles necesarios para pasar los 7 puentes troll para las condiciones dadas en ese día.
Asumir:
- Dos parámetros de entrada: porcentaje de impuesto a la torta (entero de 0 a 100) y reembolso de la torta de trol
- Nadie, ni siquiera los trolls, quiere un pastel parcialmente comido por otro troll. Si te queda una fracción de pastel, el troll lo consigue.
- Si un troll acepta un impuesto sobre los pasteles, pero luego tiene que devolverle todos los pasteles (se queda con los mismos o menos pasteles que antes), se enojará y se comerá a usted y sus pasteles.
- Cada troll debe conservar al menos un pastel completo.
- Solo puedes llevar un máximo de 100 pasteles.
- Debe finalizar el día en el que se encuentra actualmente o al otro lado de los 7 puentes.
Desafío:
Escriba un programa completo para generar el número mínimo de pasteles para viajar para el día actual o cero si no es posible viajar hoy con seguridad; esperará para ver cuáles son los números mañana.
La entrada debe pasarse como stdin, argumentos de línea de comando o entrada de archivo.
El código más corto (recuento de bytes) gana.
Ejemplo:
25% de impuesto sobre la torta, reembolso del pastel de 2 troll.
comience con 19 pasteles
antes del troll 1: (19 * 0.75) = 14.25
después del troll 1: (14 + 2) = 16
antes del troll 2: (16 * 0.75) = 12
después del troll 2: (12 + 2) = 14
etc.
19 pasteles -> 16 -> 14 -> 12 -> 11 -> 10 -> 9 -> 8
18 pasteles -> 15 -> 13 -> 11 -> 10 -> 9 -> 8 -> 8 (regla 3)
Para 18 pasteles, el último troll no podría quedarse con ningún pastel. Por lo tanto, el número mínimo de pasteles para un 25% / 2 días es 19.
input: 25 2
output: 19
Ejemplo 2
90% de impuesto sobre la torta, 1 reembolso de la torta troll
100 pasteles -> 11 -> 2 -> 1 (regla 4)
El tercer troll no pudo quedarse con ningún pastel. Por lo tanto, no es posible viajar en un 90% / 1 día incluso comenzando con el número máximo de pasteles.
input: 90 1
output: 0
Datos
Prepare un gráfico rápido de valores de entrada y salida. Me sorprendió que esto no fuera "suave" (como una curva de campana o similar); Hay varias islas notables.
Datos para los interesados. Las columnas se dividen en intervalos de 5%, las filas son unidades de intervalos de reembolso de 1 torta (Excel rotó la imagen). Puede ver que no puede haber un reembolso superior a 28 tortas.
27, 17, 13, 14, 15, 18, 20, 24, 53, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
47, 27, 20, 19, 19, 19, 24, 39, 48, 68, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0
67, 37, 28, 24, 23, 28, 27, 29, 50, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
87, 47, 33, 29, 27, 28, 31, 44, 37, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 57, 40, 34, 31, 29, 34, 34, 62, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 67, 48, 39, 35, 38, 37, 49, 57, 76, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 77, 53, 44, 39, 38, 47, 39, 59, 78, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 87, 60, 49, 43, 39, 40, 54, 46, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 97, 68, 54, 47, 48, 44, 44, 71, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 73, 59, 51, 48, 47, 59, 73, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 80, 64, 55, 49, 51, 49, 68, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 88, 69, 59, 58, 54, 64, 70, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 93, 74, 63, 58, 57, 54, 57, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 100, 79, 67, 59, 67, 69, 82, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 84, 71, 68, 60, 59, 77, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 89, 75, 68, 64, 74, 79, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 94, 79, 69, 67, 64, 66, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 99, 83, 78, 71, 79, 91, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 87, 78, 74, 69, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 91, 79, 77, 84, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 95, 88, 87, 74, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 99, 88, 80, 89, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 89, 84, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 98, 87, 94, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 98, 91, 84, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 99, 94, 99, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 97, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
25 2
caso de 11 pasteles, le das al troll 2,75 pasteles y obtienes 2 para que el troll mantenga 0,75 (+. 25) y sobrevivas. En el 90 1
caso de 2 pasteles, le das al troll 1.8 y regresas 1 para que el troll mantenga .8 (+. 2) pero mueres.