Doncs jo vaig estar a l'exament, i vaig entendre que primer demanava número
de casos: C, que els introduies per teclat, i per a cada cas demanava
número de bitlles a col·locar N, que també introduies per teclat.
Vaig tenir una feinada tan gran per arribar-hi fins ahi, que vaig quedar
KO, suada estava, i vaig pensar que segurament hi havia trampa, però ja no
me donava temps a posar-me a pensar com es feia l'altre......😰😱
Vaig fer això
*import* java*.*util*.*Scanner*;*
public class ProgramaB*{*
public static void main*(*String*[]* args*){*
Scanner sc *=* *new* Scanner*(*System*.*in*);*
System*.*out*.*println*(*"Introdueix número de casos"*);*
int C *=* sc*.*nextInt*();*
*for**(*int i*=*0*;* i*<=*C*;* i*++){*
System*.*out*.*println*(*"Introdueix numero de bitlles"*);*
int N *=* sc*.*nextInt*();*
int files *=* 1*;*
int bitlles *=* 0*;*
*while**(*bitlles*<*N*){*
bitlles *+=* files*;*
files*++;*
*}*
files*--;*
System*.*out*.*println*(*"*N*: " *+* N *+* " files necesaries: " *+* files
*);*
*}*
* }*
*}*
I ho vaig modular.
2017-05-30 8:53 GMT+02:00 ALEJANDRO CASTAN SALINAS <acastan@xxxxxxxx>:
Aquest codi que he escrit és només per provar a veure si funciona de les
dues maneres, amb fòrmula i amb iteració, provant-ho sobre els 25 primers
casos, però si dieu que a la pregunta de l'examen era:
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
Llavors cal canviar la iteració per a que demani els valors, malgrat no em
queda clar per on arriba l'entrada: teclat? fitxer? línia d'arguments?
Per teclat treuria
for (i=0; i<25; i++) {
N = i;
Per posar
scanf("%d", &C);
for (i=1; i<=C; i++) {
scanf("%d", &N);
Però lo dit: no he estat a l'examen, no he llegit l'enunciat exacte.
Si hagués estat a l'examen, hagués vist aquest enunciat tan senzill que
hagués pensat que havia trampa o que jo feia algo malament, i hagués anat a
per l'altre exercici del rio Congo, més complicat
El dia 30 de maig de 2017 a les 8:14, Ivan Ricart Rotllant <
ivandenbas@xxxxxxxxx> ha escrit:
N no era aleatòri per a cada iteració?. O sigui, es demanava C que era el
nombre de casos a fer i s'iterava fent un random per a obtenir N.
El dia 30 maig 2017 07:56, "ALEJANDRO CASTAN SALINAS" <acastan@xxxxxxxx>
va escriure:
#include <stdio.h>
#include <math.h>
int main(void) {
int F, N, i;
/* Prova les 25 primeres */
for (i=0; i<25; i++) {
N = i;
printf("%3d bitlles", N);
/* Solució amb fòrmula . Cost O(1) */
printf(" fòrmula: %.2lf", 0.5*sqrt(1+8*N) - 0.5);
/* Solució amb iteració . Cost O(F) = O(arrel(N)) */
F = 0;
while (F < N) {
F++;
N = N - F;
}
printf(" iterant: %d files i sobren %d bitlles\n", F, N);
}
return 0;
}
El dia 30 de maig de 2017 a les 7:29, ALEJANDRO CASTAN SALINAS <
acastan@xxxxxxxx> ha escrit:
El dia 29 de maig de 2017 a les 19:17, Alejandro Castán Salinas <
acastan@xxxxxxxx> ha escrit:
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);
Perdó, on dic
while (i < N)
vull dir
while (i <= N)
i com que F sempre val i-1 encara es pot resoldre amb menys
instruccions ...
F = 0;
while (F < N) {
F++;
N = N - F;
}
printf("%d files i sobren %d bitlles\n", F, N);
Però a aquesta solució, com a la de la fòrmula matemàtica. no hi ha cap
estructura de dades, només un parell de variables
--
Àlex Castán Salinas
Institut Ausiàs March
avinguda d’Esplugues, 38-42, 08034 Barcelona
telèfon. 93-203-33-32 (tardes) , 689-46-56-36
--
Àlex Castán Salinas
Institut Ausiàs March
avinguda d’Esplugues, 38-42, 08034 Barcelona
telèfon. 93-203-33-32 (tardes) , 689-46-56-36