`
Приложение 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: "Яблочная игра".
Код задачи: Apples
Program 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