Hay un montón de melocotones en la playa y cinco monos vienen a dividirlos.
El primer mono dividió el montón de melocotones en cinco partes. Si quedaba una más, ésta.
La solución dada por death_boy en el séptimo piso es genial. Al principio no la entendí, así que traté de entenderla:
Suponiendo que el número inicial de plátanos es. : x, debe haber un número: y, tal que x+y=m, m puede ser divisible por 5 y después de restar m/5, aún puede ser divisible por 5. De esta forma, se puede dividir 5 veces (el quinto mono lo encuentra y se lo lleva),
m debe ser múltiplo de 5 y el mínimo es 5^5
Es decir, x+y=m= 5^5; siempre que conozca el valor de y, podrá conocer el valor de x, es decir, x=5^5-y
m es el valor mínimo cuando se determina x. y debe ser lo más pequeño posible, por lo que el valor de y se recorre desde 1. El código es el siguiente usando?System;
namespace?Fivemonkey
p>{
clase?Programa
{
estática?void?Main(cadena[]?args)
{
int ?n?=?5;
int?x;
Programa?a?=?new?Program();
para?(int?y ?=1;?;?y++)
{
x?=?(int)Math.Pow(n,?n)? p>if?(a.getRight(x))
{
Console.WriteLine(y);
Console.WriteLine(x); p>
romper;
}
}
Console.ReadKey();
}
public?bool?getRight(int?n)//Método: determina si este número cumple con el método de división de 5 monos
{?
int?j=0; p>
mientras?(n?%?5?==?1)
{
++j;
n?=?n ?-?n?/?5?-?1;
}
si?(j?5)?{?return ?false;?}
else?{?return?true;?}
}
//El siguiente es el método general
/*?static?void? Main(string[]?args)
{
int?n?=?5;
int?x;
Programa ?a?=?new?Program();
for?(int?i?=1;?;?i++)
{
p>
x?=?(int)Math.Pow(n,?n)?-?i;
if?(a.getRight(x))
{
Console.WriteLine(i);
Console.WriteLine(x);
romper;
}
}
Console.ReadKey();*/
}
}
}
Resultado de salida : y=4, x=3121
En comparación con atravesar x (método general), el número de recorridos y es mucho menor
——————————— — ——————————————————
Suplemento: y=4 se puede obtener directamente desde el séptimo piso. Puedes pensar en ello de esta manera, solo si. los plátanos restantes son múltiplos de 5. Para asegurar que el resto sea múltiplo de 5, lo que se debe quitar también es múltiplo de 5. Si siempre queda un resto de 1, eso significa que debes 4 desde el principio, lo que resultará en la necesidad de pedir prestado 4 de 5 más adelante (imagínese tomar 5 plátanos distribuidos para formar una unidad)
Se puede deducir que el resto 2 debe 8, el resto 3 debe 12, el resto 4 debe 16 p>
Incluso
Puedes encontrar cualquier cantidad de monos y lanzar cualquier cantidad de plátanos