Школьная олимпиада 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 (0N9). Найдите минимальное 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.