SZUKAJ NA TYM BLOGU

Zadanie 7. (0–1) ()

Rozważmy poniższy algorytm, gdzie n jest liczbą całkowitą nieujemną:

(1) wynik 0;
(2) dopóki n ≠ 0 wykonuj
(3)     wynik wynik + (n mod 10)
(4)      n n div 10 

gdzie:  mod to operator reszty z dzielenia,
            div to operator dzielenia całkowitego. 

 Dla podanego algorytmu zachodzi

1.dla n = 36789 wynik = 30.PF
2.dla n = 11111111 wynik = 8.PF
3.wynik jest równy sumie cyfr w zapisie dziesiętnym liczby n.PF
4.dla n = 1234 zmienna wynik w kolejnych iteracjach przyjmuje wartości 1, 3, 6, 10.PF
Poprawna odpowiedź

FPPF

Rozwiązanie
Algorytm ten oblicza sumę cyfr w zapisie dziesiętnym liczby n.

Wyjaśnienie krok po kroku działania algorytmu:

(1) Na początku ustawiamy zmienną wynik na 0.
(2) Następnie, dopóki wartość n jest różna od 0, wykonujemy poniższe kroki.
(3) Obliczamy resztę z dzielenia n przez 10 (czyli ostatnią cyfrę w zapisie dziesiętnym liczby n) i dodajemy ją do zmiennej wynik.
(4) Wykonujemy dzielenie całkowite n przez 10, co oznacza usunięcie ostatniej cyfry z liczby n i przesunięcie cyfr w lewo.
(5) Powtarzamy kroki (3) i (4) dla nowej wartości n, aż do momentu, gdy n osiągnie wartość 0.

Po zakończeniu działania algorytmu, wartość zmiennej wynik będzie równa sumie cyfr w zapisie dziesiętnym liczby n.

Przykład: Niech n=1234. Wtedy algorytm działa w następujący sposób:

(1) wynik ← 0;
(2) 1234 ≠ 0, więc wykonujemy kroki (3) i (4)
(3) wynik ← wynik + (1234 mod 10) = 0 + 4 = 4
(4) n ← n div 10 = 123
(5) 123 ≠ 0, więc wykonujemy kroki (3) i (4)
(3) wynik ← wynik + (123 mod 10) = 4 + 3 = 7
(4) n ← n div 10 = 12
(5) 12 ≠ 0, więc wykonujemy kroki (3) i (4)
(3) wynik ← wynik + (12 mod 10) = 7 + 2 = 9
(4) n ← n div 10 = 1
(5) 1 ≠ 0, więc wykonujemy kroki (3) i (4)
(3) wynik ← wynik + (1 mod 10) = 9 + 1 = 10
(4) n ← n div 10 = 0
(5) 0 = 0, więc kończymy działanie algorytmu.

Po zakończeniu działania algorytmu, wartość wyniku wynosi 10, co jest sumą cyfr w zapisie dziesiętnym liczby n=1234.