2 votos

Un número cuando se desplaza un dígito al dividirse por el primer número es igual a 4.

Un número de 4 cifras, por ejemplo 1234, cuando se desplaza circularmente 1 cifra hasta, por ejemplo, 4123, debe ser 4 veces mayor que el número inicial.

He probado este código en MATLAB:

for i = 1000:1:9999
    first = i;
    second = str2double(circshift(num2str(first)',1)');
    if (second/first) == 4
        break;
    end
end

Pero el valor que obtengo de firstnumber es 9999. ¿Hay algún método mejor para encontrar el número? Necesito alguna orientación..

1voto

5xum Puntos 41561

Se obtiene firstnumber igual a $9999$ porque no hay $4$ -que satisfaga su condición. El código python siguiente imprimiría dicho número si existiera.

for i in range(1000, 10000):
    s = str(i)
    shift = int(s[-1] + s[:-1])
    if shift * 1.0 / i == 4:
        print i
        print shift
        break

1voto

yurnero Puntos 2423

Está buscando 2 números $x$ y $y$ tal que: $1\leq y\leq 9$ , $100\leq x\leq 999$ y $$ (y\times 1000+x)=4(10x+y)\implies 996y=39x. $$ Pero $39x$ es divisible por $13$ mientras que $996y$ no puede ser. Así que hay tales $x$ y $y$ . Es por eso que su bucle se ejecuta en su valor final ( $9999$ ).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X