Статья на тему Подготовка к олимпиадам по информатике:Условный оператор


Тема: Готовимся к олимпиадам. Условный оператор
Задача A. Максимум из двух чисел
Формат входных данных
Даны два целых числа, каждое число записано в отдельной строке.
Формат выходных данных
Выведите наибольшее из данных чисел.
Примеры
Входные данные Выходные данные
1
2 2
Задача B. Високосный год
Требуется определить, является ли данный год високосным. (Напомним, что год является високосным, если его номер кратен 4, но не кратен 100, а также если он кратен 400.)
Примеры
Входные данные Выходные данные
2007 NO
2000 YES
ЗадачаC. Тестирующая система
В условии одной из задач на этом сайте написано: “Если данное четырехзначное число является симметричным, выведите 1, иначе выведите любое другое целое число”. Для проверки задачи используются заранее подготовленные примеры и правильные ответ на них.
Школьнику кажется, что он решил эту задачу, но тестирующая система почему-то не принимает его решение. Школьник думает, что это происходит оттого, что он выводит не то любое другое число, которое записано в правильных ответах.
Напишите программу, которая по ответу, записанному в тестирующей системе и по ответу школьника определяет, верно ли школьник решил задачу. Программа получает на вход два числа: ответ, записанный в тестирующей системе и ответ школьника. Программа должна вывести YES, если школьник дал верный ответ и NO в противном случае.
Примеры
Входные данные Выходные данные
11
-1 YES
3
1 NO
Задача D. Знак числа
В математике функция sign(x) (знак числа) определена так:
sign(x) = 1, если x > 0,
sign(x) = -1, если x < 0,
sign(x) = 0, если x = 0.
Для данного числа x выведите значение sign(x).
Примеры
Входные данные Выходные данные
179 1
Задача E. Какое из чисел больше?
Формат входных данных
Даны два целых числа, каждое записано в отдельной строке.
Формат выходных данных
Программа должна вывести число 1, если первое число больше второго, число 2, если второе больше первого, или число 0, если они равны.
Примеры
Входные данные Выходные данные
1
2 2
Задача F. Максимум из трех
Формат входных данных
Даны три целых числа, каждое записано в отдельной строке.
Формат выходных данных
Выведите наибольшее из данных чисел (программа должна вывести ровно одно целое число).
Примеры
Входные данные Выходные данные
1
2
3 3
Задача G. Ладья
Требуется определить, бьет ли ладья, стоящая на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты ладьи (два числа) и координаты другой фигуры (два числа), каждое число вводится в отдельной строке.
Примеры
Входные данные Выходные данные
1
1
2
2 NO
1
1
2
1 YES
Задача H. Слон
Требуется определить, бьет ли слон, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты слона и координаты другой фигуры.
Примеры
Входные данные Выходные данные
1
1
2
2 YES
1
1
2
1 NO
Задача I. Ферзь
Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты ферзя и координаты другой фигуры.
Примеры
Входные данные Выходные данные
1
1
2
1 YES
1
1
3
2 NO
Задача J. Король
Поле шахматной доски определяется парой чисел (a, b), каждое от 1 до 8, первое число задает номер столбца, второе – номер строки. Заданы две клетки. Определите, может ли шахматный король попасть с первой клетки на вторую за один ход.
Формат входных данных
Даны 4 целых числа от 1 до 8 каждое, первые два задают начальную клетку, вторые два задают конечную клетку. Начальная и конечная клетки не совпадают. Числа записаны в отдельных строках.
Формат выходных данных
Программа должна вывести YES, если из первой клетки ходом короля можно попасть во вторую, или NO в противном случае.
Пример
Входные данные Выходные данные
1
2
2
2 YES
Задача K. Конь
Требуется определить, бьет ли конь, стоящий на клетке с указанными координатами (номер строки и номер столбца), фигуру, стоящую на другой указанной клетке. Вводятся четыре числа: координаты коня и координаты другой фигуры.
Примеры
Входные данные Выходные данные
1
1
3
2 YES
1
1
3
3 NO
Задача L. Шоколадка
Требуется определить, можно ли от шоколадки размером n × m долек отломить k долек, если разрешается сделать один разлом по прямой между дольками (то есть разломить шоколадку на два прямоугольника). Вводятся 3 числа: n, m и k; k не равно n × m. Гарантируется, что количество долек в шоколадке не превосходит 30000.
Примеры
Входные данные Выходные данные
3
2
4 YES
3
2
1 NO
Задача M. Фишки
В каждую крайнюю клетку квадратной доски поставили по фишке. Могло ли оказаться, что выставлено ровно k фишек? (Например, если доска 2 x 2, то выставлено 4 фишки, а если 6 x 6 - то 20).
Вводится одно натуральное число k.
Примеры
Входные данные Выходные данные
20 YES
13 NO
Задача N. Уравнение
Решить в целых числах уравнение ax + b = 0. Вводятся 2 числа: a и b. Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.
Примеры
Входные данные Выходные данные
1
1 -1
2
1 NO
Задача O. Сложное уравнение
Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0. Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно. Необходимо вывести все решения, если их число конечно, “NO” (без кавычек), если решений нет, и “INF” (без кавычек), если решений бесконечно много.
Примеры
Входные данные Выходные данные
1
1
3
2 -1
1
1
1
1 NO
Задача P. Сдача
Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить? Вводятся 4 числа: a, b, c и d. Необходимо вывести 2 числа: e и f, число рублей и копеек, соответственно.
Примеры
Входные данные Выходные данные
2
1
3
2 1 1
2
1
4
0 1 99
Задача Q. Мороженое
В кафе мороженое продают по три шарика и по пять шариков. Можно ли купить ровно k шариков мороженого?
Примеры
Входные данные Выходные данные
3 YES
1 NO
Задача R. Котлеты
На сковородку одновременно можно положить k котлет. Каждую котлету нужно с каждой стороны обжаривать m минут непрерывно. За какое наименьшее время удастся поджарить с обеих сторон n котлет? Вводятся 3 числа: k, m и n. Все числа не превосходят 32000.
Примеры
Входные данные Выходные данные
1
1
1 2
2
2
1 4
Задача S. Координатные четверти
Даны координаты двух точек на плоскости, требуется определить, лежат ли они в одной координатной четверти или нет (все координаты отличны от нуля). Вводятся 4 числа: координаты первой точки (x1, y1) и координаты второй точки (x2, y2).
Примеры
Входные данные Выходные данные
1
1
3
2 YES
1
1
-1
1 NO
Задача T. Существует ли треугольник?
Формат входных данных
Даны три натуральных числа a, b, c, записанные в отдельных строках. Определите, существует ли треугольник с такими сторонами.
Формат выходных данных
Если треугольник существует, выведите строку YES, иначе выведите строку NO.
Пример
Входные данные Выходные данные
3
4
5 YES
Задача U. Количество равных из трехФормат входных данных
Даны три целых числа, записанных в отдельных строках. Определите, сколько среди них совпадающих.
Формат выходных данных
Программа должна вывести одно из чисел: 3 (если все совпадают), 2 (если два совпадают) или 0 (если все числа различны).
Примеры
Входные данные Выходные данные
1
2
2 2
Задача V. Квадратное уравнение
Даны действительные числа a, b, c. Найдите все решения квадратного уравнения ax2 + bx + c = 0.
Формат входных данных
Даны три действительных числа, a не равно 0.
Формат выходных данных
Выведите два действительных числа, если уравнение имеет два корня, одно действительное число – при наличии одного корня. При отсутствии действительных корней ничего выводить не нужно.
Примеры
Входные данные Выходные данные
1
0
0 0
Задача W. Тип треугольника
Определите тип треугольника (остроугольный, тупоугольный, прямоугольный) с данными сторонами.
Формат входных данных
Даны три натуральных числа – стороны треугольника.
Формат выходных данных
Необходимо вывести одно из слов: right для прямоугольного треугольника, acute для остроугольного треугольника, obtuse для тупоугольного треугольника или impossible, если входные числа не образуют треугольника.
Примеры
Входные данные Выходные данные
3
4
5 right
Задача X. Коровы
По данному числу n закончите фразу "На лугу пасется..." одним из возможных продолжений: "n коров", "n корова", "n коровы", правильно склоняя слово "корова".
Формат входных данных
Дано число n (n<100).
Формат выходных данных
Программа должна вывести введенное число n и одно из слов (на латинице): korov, korova или korovy, например, 1 korova, 2 korovy, 5 korov. Между числом и словом должен стоять ровно один пробел.
Примеры
Входные данные Выходные данные
1 1 korova
Задача Y. Билеты на метро
Билет на одну поездку в метро стоит 15 рублей, билет на 10 поездок стоит 125 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.
Формат входных данных
Дано одно число n - количество поездок.
Формат выходных данных
Выведите три целых числа, равные необходимому количеству билетов на 1, на 10, на 60 поездок.
Примеры
Входные данные Выходные данные
129 0 1 2
Задача Z. Билеты на метро – 2
Билет на одну поездку в метро стоит 15 рублей, билет на 5 поездок стоит 70 рублей, билет на 10 поездок стоит 125 рублей, билет на 20 поездок стоит 230 рублей, билет на 60 поездок стоит 440 рублей. Пассажир планирует совершить n поездок. Определите, сколько билетов каждого вида он должен приобрести, чтобы суммарное количество оплаченных поездок было не меньше n, а общая стоимость приобретенных билетов – минимальна.
Формат входных данных
Дано одно число n - количество поездок.
Формат выходных данных
Выведите пять целых чисел, равные необходимому количеству билетов на 1, на 5, на 10, на 20, на 60 поездок. Если для какого-то данного n существует несколько способов приобретения билетов одинаковой стоимости, необходимо вывести ту комбинацию билетов, которая дает большее число поездок.
Примеры
Входные данные Выходные данные
1 1 0 0 0 0
Задача AA. Координаты соседей
Для клетки с координатами (x, y) в таблице размером M × N выведите координаты ее соседей. Соседними называются клетки, имеющие общую сторону.
Формат входного файла
Даны натуральные числа M, N, x, y (1 ≤ x ≤ M ≤ 109, 1 ≤ y ≤ N ≤ 109).
Формат выходного файла
В выходной файл выведите пары координат соседей этой клетки в произвольном порядке.
Примеры
Входные данные Выходные данные
3 3
2 2
2 1
1 2
2 3
3 2
Задача AB. Апельсины бочками
Бизнесмен Василий после прочтения известной книги решил открыть новый бизнес – отгружать апельсины бочками. Партнерам важно знать сколько именно бочек апельсинов отгружается каждый день.
Мобильный телефон Василия поддерживает только транслит, поэтому он передает сообщения вида "N bochek" . Например, "3 bochki" или "1 bochka" .
Напишите программу, которая выбирает правильное слово (из "bochka" , "bochek" , "bochki" ) в зависимости от N.
Формат входного файла
Одно число N (0 ≤ N ≤ 1000).
Формат выходного файла
Фраза на транслите (см. примеры).
Примеры
Входные данные Выходные данные
1 1 bochka
15 15 bochek
3 3 bochki
Задача AC. Четные и нечетные числа
Даны три целых числа A, B, C. Определить, есть ли среди них хотя бы одно четное и хотя бы одно нечетное.
Формат входных данных
Числа A, B, C, не превышающие по модулю 10000.
Формат выходных данных
Одна строка – "YES" или "NO" .
Примеры
Входные данные Выходные данные
3
4
5 YES
7
7
7 NO
Задача AD. Римская система счисления
Дано число X. Требуется перевести это число в римскую систему счисления.
Формат входного файла
Дано число X в десятичной системе счисления (1 ≤ X ≤ 100).
Формат выходного файла
Выведите X в римской системе счисления.
Примеры
Входные данные Выходные данные
4 IV
19 XIX
46 XLVI
Задача AE. Упорядочить три числа
Дано три числа, записанный в отдельных строках. Упорядочите их в порядке неубывания. Программа должна считывать три числа a, b, c, затем программа должна менять их значения так, чтобы стали выполнены условия a <= b <= c, затем программа выводит тройку a, b, c.
Примеры
Входные данные Выходные данные
1
2
1 1 1 2
Задача A. Максимум из двух чисел
var a,b,max:integer;
begin read(a,b);
max:=a;
if b>max then max:=b;
write(max);
end.
Задача B. Високосный год
var a:integer;
begin read(a);
if (a mod 4=0) and (a mod 100<>0) or (a mod 400=0) then
write('YES') else write('NO');
end.
ЗадачаC. Тестирующая система
var a,b:longint;
begin read(a,b);
if (a=1) and (b=1) or (a<>1) and (b<>1)
then write('YES')
else write ('NO');
end.
Задача D. Знак числа
var n:real;
begin read(n);
if n>0 then write(1);
if n=0 then write(0);
if n<0 then write(-1);
//if n<>0 then write(n/ABS(n)) else write(0);
end.
Задача E. Какое из чисел больше?
var a,b:integer;
begin read(a,b);
if a>b then write(1)
else if b>a then write(2)
else write(0);
end.
Задача F. Максимум из трех
var a,b,c,max:integer;
begin read(a,b,c);
max:=a;
if b>max then max:=b;
if c>max then max:=c;
write(max);
end.
Задача G. Ладья
var a,b,c,d:integer;
begin read(a,b,c,d);
if (a=c) or (b=d) then
write('YES')
else write('NO');
end.
Задача H. Слон
var a,b,c,d:integer;
begin read(a,b,c,d);
if abs(a-c)=abs(b-d) then
write('YES')
else write('NO');
end.
Задача I. Ферзь
var a,b,c,d:integer;
begin read(a,b,c,d);
if (abs(a-c)=abs(b-d)) or (a=c) or (b=d) then
write('YES')
else write('NO');
end.
Задача J. Король
var a,b,c,d:integer;
begin read(a,b,c,d);
if ((abs(a-c)=0) or (abs(a-c)=1)) and ((abs(b-d)=0) or (abs(b-d)=1)) then
write('YES')
else write('NO');
end.
Задача K. Конь
var a,b,c,d:integer;
begin read(a,b,c,d);
if (abs(a-c)=1) and (abs(d-b)=2) or (abs(a-c)=2) and (abs(d-b)=1) then
write('YES')
else write('NO');
end.
Задача L. Шоколадка
var n,m,k:integer;
begin if k>n*m then
write('NO')
else if (k<>1) and ((k mod n=0) or (k mod m=0)) then
write('YES')
else write('NO');
end.
Задача M. Фишки
var k:integer;
begin read(k);
if k=1 then write('YES')
else if k mod 4=0 then
write('YES')
else write('NO');
end.
Задача N. Уравнение
var a,b:integer;
begin read(a,b);
if (a=0) and (b=0) then
write('INF')
else if (a=0) and (b<>0) then
write('NO')
else if b mod a=0 then
write(-(b div a))
else write('NO');
end.
Задача O. Сложное уравнение
var a,b,c,d:integer;
begin read(a,b,c,d);
if (a=0) and (b=0) then
write('INF')
else if (a=0) and (b<>0) or (a=c) and (b=d) then
write('NO')
else if (a<>0) and (b mod a=0) and (c*(-b/a)+d<>0) then
write(-b div a)
else write('NO');
end.
Задача P. Сдача
var a,b,c,d:integer;
begin read(a,b,c,d);
if a*100+b>=c*100+d then
write(0,' ',0)
else write((c*100+d-a*100-b) div 100,' ',(c*100+d-a*100-b) mod 100);
end.
Задача Q. Мороженое
var a,b,c,d:integer;
begin read(a,b,c,d);
if a*100+b>=c*100+d then
write(0,' ',0)
else write((c*100+d-a*100-b) div 100,' ',(c*100+d-a*100-b) mod 100);
end.
Задача R. Котлеты
var k,m,n,t:longint;
begin read(k,m,n);
if n<=k then t:=2*m
else begin t:=(2*n) div k*m;
if (2*n) mod k<>0 then t:=t+m;
end;
write(t);
end.
Задача S. Координатные четверти
var x1,y1,x2,y2:real;
begin read(x1,y1,x2,y2);
if (x1/x2>0) and (y1/y2>0) then
write('YES')
else write('NO');
end.
Задача T. Существует ли треугольник?
var a,b,c:integer;
begin read(a,b,c);
if (a+b>c) and (b+c>a) and (a+c>b) then
write('YES')
else write('NO');
end.
Задача U. Количество равных из трехvar a,b,c,d:integer;
begin read(a,b,c);
d:=0;
if (a=b) and (b=c) then d:=3
else if (a=b) or (b=c) or (a=c) then d:=2;
write(d);
end.
Задача V. Квадратное уравнение
var a,b,c,d,x1,x2:real;
begin read(a,b,c);
d:=b*b-4*a*c;
if d>0 then
begin x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write(x1,' ',x2)
end else if d=0 then
begin x1:=-b/(2*a);
write(x1);
end;
end.
Задача W. Тип треугольника
var a,b,c,max,m2,m3:longint;
begin read(a,b,c);
if (a+b>c) and (b+c>a) and (a+c>b) then
begin max:=a;m2:=b;m3:=c;
if b>max then begin max:=b;m2:=a;m3:=c;end;
if c>max then begin max:=c;m2:=b;m3:=a;end;
if m2*m2+m3*m3=max*max then write('right')
else if m2*m2+m3*m3>max*max then write('acute')
else write('obtuse')
end else write('impossible');
end.
Задача X. Коровы
var n:integer;
begin read(n);
if (n>=5) and (n<=20) then write(n,' korov')
else if (n mod 10=1) then write(n,' korova')
else if (n mod 10>=2) and (n mod 10<=4) then write(n,' korovy')
else write(n,' korov');
end.
Задача Y. Билеты на метро
var n,n1,n10,n60,o60,o10:integer;
begin read(n);
n60:=n div 60;
o60:=n mod 60;
if o60>=35 then n60:=n60+1
else begin n10:=o60 div 10;
o10:=o60 mod 10;
if o10=9 then n10:=n10+1
else n1:=o10;
end;
write(n1,' ',n10,' ',n60);
end.
Задача Z. Билеты на метро – 2
var n,n1,n5,n10,n20,n60,o60,o20,o10,o5:integer;
begin read(n);
n60:=n div 60;
o60:=n mod 60;
if o60>=36 then n60:=n60+1
else begin n20:=o60 div 20;
o20:=o60 mod 20;
if o20>=18 then n20:=n20+1
else begin n10:=o20 div 10;
o10:=o20 mod 10;
if o10=9 then n10:=n10+1
else begin n5:=o10 div 5;
o5:=o10 mod 5;
n1:=o5;
end;
end;
end;
write(n1,' ',n5,' ',n10,' ',n20,' ',n60);
end.
Задача AA. Координаты соседей
var m,n,x,y:longint;
begin read(m,n,x,y);
if x<m then writeln(x+1,' ',y);
if x>1 then writeln(x-1,' ',y);
if y<n then writeln(x,' ',y+1);
if y>1 then writeln(x,' ',y-1);
end.
Задача AB. Апельсины бочками
var n:integer;
begin read(n);
if (n mod 100>=11) and (n mod 100<=14) then write(n,' bochek')
else if (n mod 10=1) then write(n,' bochka')
else if (n mod 10>=2) and (n mod 10<=4) then write(n,' bochki')
else write(n,' bochek');
end.
Задача AC. Четные и нечетные числа
var a,b,c:integer;
begin read(a,b,c);
if ((a mod 2=0) or (b mod 2=0) or (c mod 2=0))
and ((a mod 2<>0) or (b mod 2<>0) or (c mod 2<>0))
then write('YES')
else write('NO');
end.
Задача AD. Римская система счисления
var x,a,b:integer;
begin read(x);
a:=x div 10;
b:=x mod 10;
if x=100 then write('C');
if a=1 then write('X');
if a=2 then write('XX');
if a=3 then write('XXX');
if a=4 then write('XL');
if a=5 then write('L');
if a=6 then write('LX');
if a=7 then write('LXX');
if a=8 then write('LXXX');
if a=9 then write('XC');
if b=1 then write('I');
if b=2 then write('II');
if b=3 then write('III');
if b=4 then write('IV');
if b=5 then write('V');
if b=6 then write('VI');
if b=7 then write('VII');
if b=8 then write('VIII');
if b=9 then write('IX');
end.
Задача AE. Упорядочить три числа
var a,b,c,max,sr,min,summa:integer;
begin read(a,b,c);
summa:=a+b+c;
max:=a;
if b>max then max:=b;
if c>max then max:=c;
min:=a;
if b<min then min:=b;
if c<min then min:=c;
sr:=summa-(max+min);
a:=min;
b:=sr;
c:=max;
write(a,' ',b,' ',c);
end.