Hace 6 años | Por --92492--
Publicado hace 6 años por --92492--

Comentarios

D

Y como no sé editarlo, si quieres probar tu solución en una plataforma que te la prueba, aquí:
https://www.hackerrank.com/contests/projecteuler/challenges/euler001/problem

Podrás programarlo en tu lenguaje favorito, y hackerrank se encargará de hacerle los unit tests y darte una nota. El objetivo es el 100%

D

#1 Yo ya he hecho mi parte.
Ahora los matemáticos que saquen la progresión del bucle
{
long t = 100;
long n,n1,n2,n3;
for(int a0 = 0; a0

D

#2 Mmmmmm... Parece correcta Faltan los motivos. En mi caso lo hice asÍ:

private static BigInteger SumDivisibleBy(int n, BigInteger p)

private static BigInteger DivisibleByBoth(int n) return SumDivisibleBy(3, n) + SumDivisibleBy(5, n) + SumDivisibleBy(15, n);
">

D

#3 Era más fácil con el modulo/resto "%" pero como has puesto la condición O(1)...

En DivisibleByBoth creo que debería restar el SumDivisibleBy(15, n) para eliminar una de las sumas cuando se trata de un múltiplo de 3 y de 5 (15 por ejemplo) (15+15-15)

D

#4 Perdón sí, es resta, es que no puse el método main entero por sencillez.

D

#0, viendo lo que dice en el enunciado y tu solución en #3, creo que lo que en realidad querías calcular es la suma de dichos múltiplos, ¿no?

De hecho con tu enunciado he entendido que había que sacar una lista con todos los múltiplos y no entendía cómo se podría hacer eso igual de rápido independientemente del tamaño de n.

D

#6 Mil perdones! Sí efectivamente.

D

#7, lo curioso es que #2 también te ha entendido lol

D

#8 porque ha ido directito a hackerrank

D

#9 Era evidente con printf("%li",n1+n2-n3);
Es que eso de hackerank es un vicio. Gracias de nuevo! lol