Subprogramul produs are doi parametri, în această ordine:
a, prin care primește un număr natural (a∈[1,106]);
k, prin care furnizează cea mai mare valoare naturală impară cu proprietatea că produsul tuturor numerelor impare din intervalul [1,k] este mai mic sau egal cu a.
Scrieți definiția completă a subprogramului.
EXEMPLU:
Dacă a=200, atunci k=7 (1⋅3⋅5⋅7 ≤ 200 <1⋅3⋅5⋅7⋅9).
Eu am gasit aceasta rezolvare care aparent e buna, insa nu inteleg ceva!!!
void produs(int a, int &k)
{
int p=1, i;
for(i=1; p<=a; i+=2)
p*=i;
k=i-4;
}
de ce acolo, la final, k=i-4. Daca ar fi fost dupa mine, eu as fi pus k=i-2, insa am incercat si nu da corect. Cine imi poate explica?
Multumesc frumos!!!
iamsmart10:
Problema 2808 pe pbinfo.ro
Răspunsuri la întrebare
Răspuns de
1
Salut!
Trebuie sa scadem cu -4, deoarece noi incepem cu i ul de la 1, iar daca ar fi sa dam niste cout uri pe exemplu ar veni astfel:
p = 1 (1 * 1 = 1), deci un pas va fi tot 1, in loc sa trecem la 3
i = 3 (1 + 2 = 3)
p = 3
i = 5
p = 15
i = 7
p = 105
i = 9 (daca ar fi fost sa ne oprim aici, atunci ar fi fost k = i - 2), insa p este in continuare <= a, asa ca mai mergem inca un pas)
p = 945 (aici p a depasit valoarea lui a, insa il crestem in continuare si pe i, iar apoi programul va verifica si va vedea ca p a depasit valoarea lui a)
i = 11
7 (k = 7)
Un fix la chestia asta ar fi sa verificam dupa instructiunea p *= i daca p a depasit a, iar daca a depasit ii dam un break fortat, pentru a nu l mai creste pe i, iar astfel rezultatul k va fi i - 2
Alte întrebări interesante
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Studii sociale,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă