Hola,
No he estat a les opos, però de l'enunciat no em queda clar qué cal fer
quan el número de bitlles N no forma triangle equilàter exacte. Per
exemple, si donen 11 bitlles el triangle tindrà quatre files i sobra una
bitlla.
Sembla que no veig clara alguna cosa, perquè altres anys han caigut
algoritmes realment durs, i aquest problema em sembla trivial. Potser es
pot fer servir la formula de la suma aritmètica N = 1 + 2 + 3 + 4 + ...
+ F = F*(F+1)/2 , on F és el número de files i N el número de bitlles.
Cal trobar F i per això es pot utilitzar la fòrmula de les eqüacions de
segon grau:
F² + F - 2N = 0 -> F = -1/2 +- sqrt(1 + 8N)/2
I si a algú no li agraden les mates amb un únic bucle de dos
instruccions també es troba F. Quelcom semblant a:
F = 0;
i = 1;
while (i < N) {
N = N - i;
i++;
F++
}
printf("%d files i sobren %d bitlles\n", F, N);
Em sembla realment extrany. En què m'estic equivocant? Aquest exercici
està en el meu dossier d'exercicis de programació senzills per a alumnes
de 1er ASIX.
El 29/05/17 a las 15:33, ESTER MARSAL ROCA escribió:
Hola,
Aquí hi ha l'exercici de l'opció B de la part A del cos 507. És un
redactat aproximat del què recordo:
Les bitlles en un bowling es col·loquen en forma de triangle
equilàter, a cada fila hi ha una bitlla més que la fila anterior
Entrada
C N N...
On C és la quantitat de casos i N la quantitat de bitlles que cal
col·locar com a mínim
Sortida
Quantitat de files que tindrà el triangle, per cada cas
La C és un valor entre 0 i 10.000 sense incloure el 0,
La N és un valor entre 0 i 10^9 sense incloure el 0.