Informacje dla kandydatów

Pętla potęgą jest i basta

Poniższa pętla oblicza wartość y=xn, dla nieujemnej wartości całkowitej n:

y = 1.0; for(i = 0; i < n ; i++) y *= x;

N-ta potęga zostaje obliczona za pomocą n mnożeń.

Napisz obliczanie n-tej potęgi jak najmniejszą liczbą mnożeń.

Wskazówka: x32  można policzyć za pomocą pięciu mnożeń.

Czy ta pętla zawsze kończy swoje działanie?

Czy dla dowolnej całkowitej dodatniej wartości n poniższa pętla w języku C kończy pracę?

while(n % 2 != 0) n = (3 * n + 1) / 2;

Wskazówka: aby pokazać, że pętla zawsze kończy pracę, należy wskazać taką całkowitą wielkość, która przyjmuje tylko nieujemne wartości i maleje po każdym wykonaniu instrukcji wewnątrz pętli (liczby naturalne nie mogą tworzyć nieskończonego ciągu malejącego).

Zadanie zaczerpnięto z książki S. Alagić, M.A. Arbib. Projektowanie programów poprawnych i dobrze zbudowanych. WNT, Warszawa 1982.

Jedna funkcja - dużo zamieszania

Ile procesów potomnych powstanie w wyniku wykonania następującego fragmentu programu w języku C:

for(i = 0; i < n; i++) fork();

O funkcji fork() i tworzeniu procesów potomnych możesz przeczytać w rozdziale Processes książki Advanced Linux Programming albo w Wikipedii.

Wskazówka: jeśli masz problem z rozwiązaniem zadania, to może podpowie Ci odpowiedź w przypadku dla n=5.