`
Додаток C. Приклади задач та їхніх рішень.
Щоб показати, як будуть формулюватися задачі олімпіади і як повинні бути зроблені рішення, ми розглянемо умови двох дуже простих задач і їхні рішення. Особливу увагу зверніть на введення і вивід даних, тут не допускається ні найменших відхилень.Задача 1: "Максимум".
Код задачі: MaximumБагато проповідників, психологи і політики називають стан нашої економіки періодом накопичення початкового капіталу. У цих умовах надзвичайно актуальна така задача:
Дана послідовність із N цілих чисел: a1, a2, ... , a. Потрібно знайти найбільше число, що міститься в цій послідовності.
Обмеження: 1 < N < 1000; -1000 <= a <= 1000, K=1,2,..,N.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: "Яблучна гра".
Код задачі: ApplesProgram 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