`
Приложение C. Примеры задач и их решений.
Чтобы показать, как будут формулироваться задачи олимпиады и как должны быть сделаны решения, мы рассмотрим условия двух очень простых задач и их решения. Особое внимание обратите на ввод и вывод данных, здесь не допускается ни малейших отклонений.
Задача 1: "Максимум".
Код задачи: MaximumМногие проповедники, психологи и политики называют состояние нашей экономики периодом накопления начального капитала. В этих условиях чрезвычайно актуальна следующая задача:
Дана последовательность из N целых чисел: a1, a2, ..., aN. Требуется найти наибольшее число, содержащееся в этой последовательности.
Ограничения: 1 < N < 1000; -1000 <= aK <= 1000, K=1,2,..,N.Program Maximum; Const MaxN = 999; { Максимальное число элементов.} Var N: Integer; {Число элементов в последовательности.} A: array[1..MaxN] 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 MaxN 999 /* Максимальное число элементов. *// int N; /* Число элементов в последовательности. *// int A[MaxN]; /* Сама последовательность. *// 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 ", X); return 0; }
Задача 2: "Яблочная игра".
Код задачи: ApplesProgram Apples; Const MaxN = 999; { Максимальное число яблок. } Var N : Integer; { Число яблок на дубовом столе. } B : array[1..MaxN] of Integer; { Масса каждого яблока. } Eaten: array[1..MaxN] 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