Se consideră algoritmul următor
scris în pseudocod, unde x, p și n sunt numere naturale:
citește n (număr natural)
x ← 0
p ← 1
cât timp n > 0 execută
x ← x + (n mod 10 - n mod 2)*p
p ← p * 10
n ← n div 10
scrie x
Câte dintre numerele din intervalul [1,10000] nu pot fi afișate folosind algoritmul dat?
a) 736 b) 9376 c) 624 d) 2500
as vrea si o explicatie
Răspunsuri la întrebare
Răspuns:Răspunsul corect la această întrebare este b), și anume 9376. De ce?
Explicație:Ei bine, pentru aflarea răspunsului corect este suficient să observăm faptul că variabila x din prima instrucțiune din structura cât timp nu are cum să conțină cifre impare; dacă ultima cifră a lui n este impară, atunci din cifra respectivă se scade cu restul aceluiași n la 2, care este evident 1. Astfel, x nu poate fi niciodată impar. Din această observație rezultă că x-u ce o să fie afișat nu conține cifre impare. Nu ne rămâne decât să găsim numărul de numere care conțin cifre impare. Pentru simplitate ar fi indicată găsirea numerelor ce conțin numai cifre pare, urmând la final să scădem din numărul total de numere din intervalul indicat, adică din 10000. Pentru aceasta vom lua, pe rând numerele cu 4 cifre, apoi pe cele cu 3 cifre, până la cele cu o singură cifră. O formulă utilă în acest sens este: numărul de numere cu n cifre, ce conțin cifre exclusiv pare este egal cu 4 × 5^(n-1) (aici am notat cu '^' ridicarea la putere). În cazul nostru, numărul cerut este egal cu 4×(5³+5²+5+1), care este 624. Răspunsul final este 10000-624=9376, care este aferent variantei b. Sper că ai înțeles rezolvarea. Multă baftă!