СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

2017 7-8 класс Практика решения задач школьного этапа ВсОШ по информатике на языке программирования Pascal

Категория: Информатика

Нажмите, чтобы узнать подробности

Решение задач школьного этапа ВсОШ по информатике 2017-18 учебного года на языке программирования Pascal.

Просмотр содержимого документа
«2017 7-8 класс Практика решения задач школьного этапа ВсОШ по информатике на языке программирования Pascal»

Школьная олимпиада 2017 год 7- 8 классы


Имя входного файла:

Input.txt

Имя выходного файла:

Output.txt

Ограничение времени

1 секунда на тест

Ограничение по памяти

32 Мб



Задача А.  Двузначные числа

Вася, скучая на уроке математики, писал в тетради различные двузначные числа. Наугад выбирая три числа, он проверял, можно ли, суммируя первые два числа, получить третье. Сосед по парте отличник Костя, усложнив задачу, написал программу, которая позволяет проверить можно ли перестановкой цифр в числах a и b, записанных Васей, получить их сумму равную c.

Входные данные

Входной файл содержит три натуральных числа: a, b, c (9

Выходные данные

Если искомая перестановка цифр невозможна, вывести в выходной файл два нуля, разделенных пробелом. При положительном ответе необходимо вывести число x, получаемое перестановкой цифр числа a, и число y, получаемое перестановкой цифр числа b, сумма которых равна c. Числа x и y выводятся в порядке неубывания и разделяются пробелом.

Пример

Input.txt

Output.txt

12 14 53

12 41

12 13 87

0 0


{Задача A. Двузначные числа}

Const N=22;

var a,b,c,x,y,z,t: integer;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,a,b,c);

x:=a div 10;

y:=a mod 10;

z:=b div 10;

t:=b mod 10;

if a+b=c then write(outf,a,' ',b)

else if (y*10+x)+b=c then write(outf,y*10+x,' ',b)

else if a+(t*10+z)=c then write(outf,a,' ',t*10+z)

else if(y*10+x)+(t*10+z)=c then write(outf,y*10+x,' ',t*10+z)

else write(outf,0,' ',0);

close(inf);

close(outf);

end.




Задача B Приказ об отчислении

 В университете начинается очередное отчисление студентов за неуспеваемость. Для отчисления неуспевающих студентов каждой группы готовится отдельный приказ. Более того, теперь ректор требует, чтобы в одном приказе перечислялись только студенты, которые занимают некоторое количество подряд идущих строчек в лексикографически упорядоченном списке группы. Так, если в некоторой группе подлежат отчислению студенты, значащиеся в списке под номерами 1, 2, 5, 7, 8 и 9, то должно быть изготовлено не менее трёх приказов  об отчислении студентов 1 и 2, об отчислении студента 5, об отчислении студентов 7, 8 и 9. Напишите программу, которая находит минимальное количество приказов об отчислении.

 Формат входного файла

В первой строке входного файла записано целое число N – количество отчисляемых студентов (0 1, S2, …, SN (1 i

 Формат выходного файла.

В выходной файл запишите минимальное количество приказов, которое необходимо изготовить для отчисления всех неуспевающих студентов.

 Пример

Input.txt

Output.txt

3

3 4 5

1


{Задача B. Приказ об отчислении}

var a1,a2:byte;

N,i,k:byte;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,N,a1);

k:=0;

for i:=1 to N-1 do

begin

read(inf,a2);

if a2a1+1 then k:=k+1;

a1:=a2;

end;

if k=0 then write(outf,k)

else write(outf,k+1);

close(inf);

close(outf);

end.


Задача C Симметричные числа

Найти все числа из диапазона [a,b], запись которых в двоичной системе счисления симметрична относительно середины. Например, число 51 имеет симметричную двоичную запись 110011, а число 52 имеет не симметричную двоичную запись – 110100.

Формат входных данных:

Входной файл Input.txt содержит в первой строке два натуральных числа a и b (0a,b

Формат выходных данных:

Выходной файл Output.txt должен содержать все найденные натуральные числа в порядке возрастания.
Пример

Input.txt

Output.txt

12 22

15 17 21



{Задача C. Симметричные числа}

var a,b:byte;

s:string;

i,j,x,y:byte;

f:boolean;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,a,b);

for i:=a to b do

begin

x:=i;

s:='';

while x0 do

begin

if x mod 2 =0 then s:=s+'0'

else s:=s+'1';

x:=x div 2;

end;

y:=length(s);

f:=true;

for j:=1 to y div 2 do

if s[j]s[y-j+1] then

begin

f:=false;

break;

end;

if f then write(outf,i,' ');

end;

close(inf);

close(outf);

end.




Задача D Количество перестановок

Дан двумерный массив размера NxN (2N. Подсчитать количество столбцов данного массива, которые являются перестановками чисел от 1 до N.

Формат входного файла:

Входной файл Input.txt содержит в первой строке натуральное число N – размер массива.

В последующих N строках по N целых чисел из отрезка [-100;100].

Формат выходного файла:

Выходной файл Output.txt должен содержать одно целое число – количество найденных столбцов.

Пример

Input.txt

Output.txt

3

2 1 3

-2 3 1

4 2 2

2



{Задача D. Количество перестановок}

Const N=30;

var A:array[1..N,1..N] of shortint;

i,j,k,kol:byte;

x,M:shortint;

f:boolean;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,M);

for i:=1 to M do

for j:=1 to M do

read(inf,A[i,j]);

kol:=0;

for j:=1 to M do

begin

for i:=1 to M-1 do

for k:=1 to M-i do

if A[i,j]A[i+1,j] then

begin

x:=A[i,j];

A[i,j]:=A[i+1,j];

A[i+1,j]:=x;

end;

f:=true;

for i:=1 to M do

if iA[i,j] then begin f:=false; break; end;

if f then kol:=kol+1;

end;

write(outf,kol);

close(inf);

close(outf);

end.

Задача E Две окружности

Заданы две окружности с центрами в точках (x1,y1) и (x2,y2) и радиусами r1,r2 соответственно. Вывести количество точек пересечения заданных окружностей.

Формат входного файла:

Входной файл Input.txt содержит в первой строке три целых числа – координаты центра и радиус первой окружности, во второй строке координаты центра и радиус второй окружности.

Формат выходного файла:

Выходной файл Output.txt должен содержать количество точек пересечения
или -1, если точек пересечения нет или -2 если их бесконечное множество.

Пример

Input.txt

Output.txt

1 1 2

2 2 2

2




{Задача E. Две окружности}

var x1,y1,x2,y2,r1,r2:longint;

D:real;

k:longint;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,x1,y1,r1);

read(inf,x2,y2,r2);

D:=sqrt(sqr(x1-x2)+sqr(y1-y2));

if (d=r1+r2) or (d=abs(r1-r2)) then k:=1;

if (dr1+r2) or (d

if d

if d=0 then k:=-2;

write(outf,k);

close(inf);

close(outf);

end.



Задача F Потанцуем

Отмечали день рождения .За круглым столом собрались гости – одноклассницы и одноклассники. Зазвучала музыка, объявили белый танец. Девушки пригласили, сидящих рядом кавалеров. Какое наибольшее количество одновременно танцующих пар при этом может быть?

Формат входного файла:

Входной файл INPUT.TXT содержит строку заглавных латинских букв M и D. M- мальчик, D- девочка. Длина строки не превышает 255 символов.

Формат выходного файла:

Выходной файл Output.txt содержит наибольшее количество одновременно танцующих пар

Пример

Input.txt

Output.txt

DMM

1



{Задача F. Потанцуем}

var a,b:char;

k:byte;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,a,b);

k:=0;

while not eof(inf) do

begin

if ab then

begin

k:=k+1;

read(inf,a,b);

end

else

begin

a:=b;

read(inf,b);

end;

end;

write(outf,k);

close(inf);

close(outf);

end.



Задача G Система счисления

Пользователь вводит некоторое целое десятичное число N (0N9). Найдите минимальное p, такое, что N могло бы быть записью какого-либо числа в системе счисления с основанием p.

Входные данные

Входной файл содержит одно натуральное число.

Выходные данные

Входной файл содержит одно число - минимальное основание системы счисления, в которой это число может быть записано.

Пример

Input.txt

Output.txt

123

4


{Задача G. Система счисления}

var N:longint;

c,maxc:byte;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,N);

maxc:=0;

while N0 do

begin

c:=N mod 10;

if cmaxc then maxc:=c;

N:=N div 10;

end;

writeln(outf,maxc+1);

close(inf);

close(outf);

end.

{Задача A. Сундук пирата}

Const N=22;

var F:array[1..N] of integer;

x,y:integer;

i,j:byte;

a,b:integer;

k1,k2:integer;

inf,outf:text;

begin

assign(inf,'input.txt');

assign(outf,'output.txt');

reset(inf);

rewrite(outf);

read(inf,x,y);

F[1]:=1;

F[2]:=1;

for i:=3 to N do

F[i]:=F[i-2]+F[i-1];

k1:=F[x-2];

k2:=F[x-1];

for i:=1 to y do

for j:=1 to y do

begin

if k1*i+k2*j=y then

begin

a:=i;

b:=j;

break;

end;

end;

writeln(outf,a,' ',b);

close(inf);

close(outf);

end.