Sigui
l’equivalent matemàtic de y%m en C++. Una manera habitual
d’aconseguir una seqüència de nombres pseudo-aleatoris consisteix a
triar tres naturals
,
i
,
i un nombre inicial
,
i calcular cada
a partir
d’,
fent servir aquesta igualtat:
Algunes combinacions produeixen seqüències que poden semblar realment aleatòries. Per exemple, amb , , , i , obtenim 4, 1, 17, 16, 6, 21, 10, 15, … Però amb , , , i obtenim 0, 50, 50, 50, …
Diverses mesures estadístiques sobre les seqüències generades en permeten estimar com s’assemblen a seqüències realment aleatòries. Feu un programa que en calculi algunes: la mitjana dels nombres obtinguts, la longitud de la subseqüència consecutiva estrictament creixent més llarga, i la longitud de la subseqüència consecutiva estrictament decreixent més llarga.
L’entrada consisteix en diversos casos, cadascuna amb cincs naturals , , , i . Aquest últim és el nombre d’elements de la seqüència que cal generar. Suposeu , que , i es troben entre 0 i , i .
Per a cada cas, escriviu les tres quantitats demanades, la primera amb dos decimals de precisió. Per fer-ho, poseu aquestes dues línies al principi del vostre main:
cout.setf(ios::fixed);
cout.precision(2);
Input
10 7 23 4 8 2 50 100 0 4 1 0 2 0 1
Output
11.25 2 3 37.50 2 1 0.00 1 1