`
Додаток C. Приклади задач та їхніх рішень.
Щоб показати, як будуть формулюватися задачі олімпіади і як повинніЗадача 1: "Максимум".
Код задачі: Maximum
Багато проповідників, психологи і політики називають стан нашої
економіки періодом накопичення початкового капіталу. У цих умовах
надзвичайно актуальна така задача:
Дана послідовність із N цілих чисел: a1, a2, ... , a. Потрібно знайти
найбільше число, що міститься в цій послідовності.
Program Maximum; Const Max = 999; { Максимальне число елементів. }
Var N: Integer; {Число елементів у послідовності. }
A: array[1..Max] of Integer; { Сама послідовність. }
X: Integer; { Необхідне число. }
K: Integer; BEGIN Введення даних. }
Read(N); for K := 1 to N do Read(A[K]); X := A[1]; for K := 2 to N do if A[K] > X then X := A[K]; { Вивід результату. }
WriteLn(X); END.
Розв'язок цієї задачі на C:
/* Maximum */ <#include #define Max 999 /* Максимальне число елементів. *//
int N; /* Число елементів у послідовності. *//
int A[Max]; /* Сама послідовність. *//
int X; /* Необхідне число. */
int main(void) { int K; /* Введення даних. */
int K; scanf("%d", &N); for (K = 0; K < N; K++) scanf("%d", &A[K]); /* Рішення задачі. */
X = A[0]; for (K = 1; K < N; K++) if (A[K] > X) X = A[K]; /* Вивід результату. */
printf("%d\n", X); return 0; }
Ще одна задача:
Задача 2: "Яблучна гра".
Код задачі: Apples
Program Apples; Const Max = 999; { Максимальне число яблук. }
Var N : Integer; { Число яблук на дубовому столі. }
B : array[1..Max] of Integer; { Маса кожного яблука. }
Eaten: array[1..Max] of Boolean; { чи З'їдене яблуко. }
Remain: Integer; Скільки залишилося яблук на столі. }
MyMove: Boolean; { Чий хід? }
MyApples, HisApples: Integer; { Скільки хто з'їв. }
X, I, K: Integer; BEGIN {Введення даних про яблука}
Read(N); for K := 1 to N do Read(B[K]); { Ми будемо ходити першими. }
MyMove := true; WriteLn(1); { Сама гра. }
for K := 1 to N do Eaten[K] := false; MyApples := 0; HisApples := 0; for Remain := N downto 1 do if MyMove then begin { Наш хід. }
I := 0; X := 0; for K := 1 to N do if (B[K] > X) and (not Eaten[K]) then begin I := K; X := B[K]; end;
MyApples := MyApples + X; Eaten[I] := true; MyMove := false; Writeln(I); end else begin { Хід суперника. }
Read(I); HisApples := HisApples + B[I]; Eaten[I] := true; MyMove := true; end; { Вивід результатів. } WriteLn(MyApples, ' ', HisApples); END.
© LIKT 1998-2024