I.2
KIMENET: 2050 205 205 20 2 2 0 20 2050
f(2050)
| cout << 2050
| f(205)
| | cout << 205
| | cout << 205
| | f(20)
| | | cout << 20
| | | f(2)
| | | | cout << 2
| | | | cout << 2
| | | | f(0)
| | | | | cout << 0
| | | | []
| | | []
| | | cout << 20
| | []
| []
| cout << 2050
[]
II.1.c
| |
II.1.d
citește m,n (numere naturale nenule, m≤n)
┌pentru i<-n,m,-1 execută
│ x<-i
│ c<-x%10
│ ┌repetă
│ │ x<-[x/10]
│ └până când x%10≠c
│ ┌dacă x=0 atunci
│ │ s
│ []
[]
átírva:
citește m,n
(numere naturale nenule, m≤n)
i <- n
┌cât timp i>=m execută
│ x<-i
│ c<-x%10
│ ┌repetă
│ │ x<-[x/10]
│ └până când x%10≠c
│ ┌dacă x=0 atunci
│ │ scrie i, ' '
│ []
│ i <- i - 1
[]
III.1.
| |
III.2
| |
III.3
b)
| |
a)
A program beolvas a memóriába számhármasokat (az A, B, C változókba), ezek tagjait ha kell felcseréli úgy, hogy az A változóban legyen a maximum. Ellenőrizzük, hogy az aktuális számhármas egy derékszögű háromszöget ábrázol-e (AA == BB + C*C), és ha igen, akkor egy frekvenciatömbbel leszámoljuk, hogy melyik A érték milyen gyakran jelent meg. A végén a gyakoriságok közül maximumot keresünk.
A program idő szempontjából hatékony, mert csak egyszer halad végig a számhármasokon, mindegyikre konstans számú lépést végez.