Hola,
He intentado de mil maneras hacer este ejercicio en Python y no he sido capaz, todas me da error, viene para hacer con bucles while...
Dejo el enunciado por si alguno tiene idea, graciass :D:
"Dados dos números enteros n (n≥0) y a (a>0) encontrar, si existe, el
menor entero x del intervalo [0, n] para el que se cumpla lo siguiente: la diferencia
entre las sumas de los valores enteros de los intervalos [n-x, n] y [0, x] coincide
con a."
He intentado hacer algo así, pero no doy con la solucion:
n=int(raw_input("introduce n: "))
a=int(raw_input("introduce a: "))
x=0
sumaintx=0
sumaintn=0
for x in range(0,n):
sumaintx=0
sumaintn=0
while(sumaintn-sumaintx!=a):
for i in range(n-x,n):
sumaintn=sumaintn+i
for j in range(0,x):
sumaintx=sumaintx+j
if(sumaintn-sumaintx==a):
print x
Pués a mi me sale... lo complicado es entender correctamente el enunciado.
He puesto como valor para n = 100000 y para a= 350 y la respuesta me da 449.
Probaré con más valores para a...
' a = 350 ' 449
' a = 65 ' 449
' a = 165 ' 446
' a = 43 ' un primo a ver que pasa 449
a = 255 ' 447
- Posiblemente tu valor para n sea tan bajo, que a no tenga oportunidad de encontrarse en ese rango...
- Bueno mirando de nuevo tu código, lo que veo es que fuerzas el while, dentro del primer bucle For, por lo que es incapaz de regresar allí e incrementar x, que siempre valdrá 0. (NOTA: Esto sin embargo, no inutiliza mi comentario previo, sobre un límite demasiado bajo de n).
Reescríbelo así:
n=int(raw_input("introduce n: "))
a=int(raw_input("introduce a: "))
x=0
sumaintx=0
sumaintn=0
x=-1
while(x<n):
x= (x +1)
sumaintx=0
sumaintn=0
#while(sumaintn-sumaintx!=a):
i= n-x
for i in range(n-x,n):
sumaintn=sumaintn+i
for j in range(0,x):
sumaintx=sumaintx+j
if(sumaintn-sumaintx==a):
print x
viendo matemáticamente esto no tiene muchos ciclos
Citarla diferencia
entre las sumas de los valores enteros de los intervalos [n-x, n] y [0, x]
esto es equivalente a (n-x)*x+(n-x) (si sacas algunas cuentas verás que es esto)
solo resuelve la ecuación donde eso iguale a
a y olvidate del ciclo XD