вторник, 27 марта 2012 г.

воскресенье, 11 марта 2012 г.

Задания для проведения I этапа Всероссийской олимпиады школьников по информатике. 2011-2012 учебный год.

После того, как мы рассмотрели основные принципы составления программ, можно приступить к рассмотрению заданий. Лучше всего думаю, рассматривать олимпиадные задачи, потому как они обычно с какими нибудь подковырками и бывают требуют интересных решений. Начнем с рассмотрения задач с  I этапа Всероссийской олимпиады (2011-2012 учебный год).

1.Куры и кролики (10 баллов).
У кур и кроликов вместе N ног. Сколько среди них кур, сколько кроликов? Составить алгоритм, который перечисляет все возможные комбинации.

Решение:


Program Zadacha_1;



  var Nkurkrol : integer;{Описываем переменные N-количество ног, kur -количество кур, krol - количество кроликов}
begin

 write('Vvedi kol-vo nog'); {Подсказка для пользователя, ввести количество ног.}
 readln(N); {Вводим количество ног}
for kur:=0 to N do {вводим цикл для перебирания количества кур}
for krol:=0 to N do {Вводим цикл для перебирания количества кроликов}
if (2*kur+4*krol)=N then writeln('kur-',kur,'krolikov-',krol);(Вводим условие: если 2*кол-во кур + 4*кол-во кроликов=N, то на экран вывести 'kur-',(число),' ','krolikov-',(число).) Таким образом благодаря циклическому алгоритму переберутся все возможные варианты.
end. (конец программы)




Задача 2. Строки в книге (15 баллов).
В книге на одной странице помещается K строк. Таким образом, на первой странице печатаются строки с 1-й по K-ю, на второй – с (K+1)-й по (2K)-ю и т. д. напишите программу, которая по номеру строки в тексте определяет номер страницы, на которой будет напечатана эта строка и порядковый номер этой строки на странице.
Формат входных данных: входной файл содержит число K – количество строк, которое печатается на странице, и число N – номер строки (1 K 200, 1 N 20 000).
Формат выходных данных: в выходной файл выведите два числа – номер страницы, на которой будет напечатана эта строка, и номер строки на странице.
Примеры:
  1. in
  1. out
50 1
20 25
15 43
  1. 1
2 5
3 13

Program Zadacha_2;
var N, K, n_str, n_stroka : integer;
f1, f2 : text;

BEGIN
assign(f1,'input.txt');
reset(f1);
read(f1,K,N);
if N mod K=0 then
begin n_str:=N div K;
n_stroka:=K
end
else
begin n_str:=(N div K)+1;
n_stroka:=N mod K
end;
assign(f2,'output.txt');
rewrite(f2);
write(f2,n_str,' ',n_stroka);
close(f1);
close(f2);
END.