Задания школьного этапа Всероссийской предметной олимпиады школьников по информатике 2016/2017 уч.год. 9 класс

(max – 45 баллов)

Задача 1. “Зарплата” – 10 баллов

Тип задачи: Задача по программированию и алгоритмам

Задание рассчитано на написание программы на любом языке программирования.

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

Если учащиеся не знакомы с языками программирования, то решение может быть сдано на алго-ритмическом или естественном языках.

В отделе работают 3 сотрудника, которые получают заработную плату в рублях. Требуется определить: на сколько зарплата самого высокооплачиваемого из них отличается от самого низкооплачиваемого.

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

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

 

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

В выходной файл OUTPUT.TXT необходимо вывести одно целое число — разницу между максимальной и минимальной зарплатой.

Примеры

INPUT.TXT

OUTPUT.TXT

1

100 500 1000900

2

36 11 2025

 

Задача 2. “Четырехзначный палиндром” – 15 баллов

Тип задачи: Задача по программированию и алгоритмам

Задание рассчитано на написание программы на любом языке программирования.

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

Если учащиеся не знакомы с языками программирования, то решение может быть сдано на алго-ритмическом или естественном языках.

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

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

Входной файл INPUT.TXT содержит натуральное число N (1000 ≤ N ≤ 9999).

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

В выходной файл OUTPUT.TXT следует вывести слово «YES», если число N является палиндромом, или «NO» – если нет.

Примеры

INPUT.TXT

OUTPUT.TXT

1

6116YES

2

1231NO

 

Задача 3. “Арбузы” – 20 баллов

Тип задачи: Задача по программированию и алгоритмам

Задание рассчитано на написание программы на любом языке программирования.

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

Если учащиеся не знакомы с языками программирования, то решение может быть сдано на алго-ритмическом или естественном языках.

Иван Васильевич пришел на рынок и решил купить два арбуза: один для себя, а другой для тещи. Понятно, что для себя нужно выбрать арбуз потяжелей, а для тещи полегче. Но вот незадача: арбузов слишком много и он не знает, как же выбрать самый легкий и самый тяжелый арбуз? Помогите ему!

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

В первой строке входного файла INPUT.TXT задано одно число N – количество арбузов. Вторая строка содержит N чисел, записанных через пробел. Здесь каждое число – это масса соответствующего арбуза. Все числа натуральные и не превышают 30000.

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

В выходной файл OUTPUT.TXT нужно вывести два числа через пробел: массу арбуза, который Иван Васильевич купит теще и массу арбуза, который он купит себе.

Пример

INPUT.TXT

OUTPUT.TXT

1

5
5 1 6 5 9
  1. 9

 

Ключи

к заданиям первого (школьного) этапа Всероссийской предметной олимпиады школьников

по информатике 2016/2017 учебный год

  1. класс (max – 45 баллов)

Задача 1. “Зарплата” – 10 баллов

Тип задачи: Задача по программированию и алгоритмам

Задание рассчитано на написание программы на любом языке программирования.

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

Если учащиеся не знакомы с языками программирования, то решение может быть сдано на алго-ритмическом или естественном языках.

 

В данной задаче необходимо найти наибольшее и наименьшее значение и вывести их разность. Для этого проще всего упорядочить заданные числа A, B и C в порядке неубывания (A<=B<=C) и тогда значение C-A будет решением этой задачи. Для этого можно было бы прибегнуть к принципу чайника и отсортировать массив из трех элементов методом «пузырька», например. Но это решение не самое разумное в данном случае.

Здесь можно применить тот же метод «пузырька», но без циклов и массивов. Действительно, за 3 сравнения можно достичь желаемого результата. Сначала сравнивая А и B мы можем в A поместить наименьшее из них, поменяв их местами. Далее сравнивая A и C мы поместим в А наименьший из 3х чисел элемент. А после сравнения B и C в C получим наибольший. Описанный выше алгоритм можно представить в виде следующей блок-схемы:

 

На всякий случай напомним, как с помощью третьей переменной можно поменять значения переменных местами: x=a; a=b; b=x;

В языке Си для различных целочисленных переменных a и b можно использовать более красивую и короткую запись без использования третьей переменной:

a^=b^=a^=b;

 

Задача 2. “Четырехзначный палиндром” – 15 баллов

Тип задачи: Задача по программированию и алгоритмам

 

Задание рассчитано на написание программы на любом языке программирования.

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

Если учащиеся не знакомы с языками программирования, то решение может быть сдано на алго-ритмическом или естественном языках.

Решение №1

Наиболее простой способ решения этой задачи заключается в чтении заданного числа в качестве строки и сравнения первого с четвертым и второго со вторым символов. Алгоритмическиэторешениевыглядиттак:

String s;

read(s);

if(s[1]=s[4] and s[2]=s[3]) write(‘YES’) else write(‘NO’);

Решение №2

Не всегда самое простое решение приходит первым в голову и не всегда начинающие программисты умеют работать со строками. Дело в том, что когда видишь, что во входных данных число, то его хочется считать в целочисленную переменную, потом расцепить на цифры, а затем уже провести сравнение. Для того, чтобы получить n-ю цифру справа, нужно исходное число x разделить целочисленно на 10n-1, отбросив тем самым лишние n-1 цифр справа от исходного числа, а затем взять остаток от деления на 10 от того, что получилось, т.е. взять последнюю цифру, которая и окажется n-й справа от исходного числа x. Реализация с использованием данного механизма может выглядеть так:

int x,x1,x2,x3,x4;

read(x);

x1 = x div 1000;

x2 = x div 100 mod 10;

x3 = x div 10 mod 10;

x4 = x mod 10;

if(x1=x4 and x2=x3) write(‘YES’) else write(‘NO’);

Задача 3. “Арбузы” – 20 баллов

Тип задачи: Задача по программированию и алгоритмам

Задание рассчитано на написание программы на любом языке программирования.

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

Если учащиеся не знакомы с языками программирования, то решение может быть сдано на алго-ритмическом или естественном языках.

В этой задаче из представленных n чисел следует выбрать наибольшее и наименьшее число, а затем просто их вывести. Для поиска максимального элемента следует определить переменную max, в которую предварительно можно занести наименьшее возможное значение, 0 например (ведь все числа натуральные, т.е. больше нуля). Далее следует считывать в переменную x текущее значение и проверять: не больше ли оно ранее найденного, которое как раз храниться в max. Если да, то будем записывать его в max. Таким образом, по окончании процесса мы получим в max наибольшее значение. Поиск минимального элемента происходит аналогично. Заметим, что в этой задаче можно обойтись без использования массивов.

Алгоритм решения этой задачи:

read(n);

max=0; min=32000;

for i=1..n{

read(x);

if(x > max) max=x;

if(x < min) min=x;

}

write(min,’ ‘,max);

На самом деле в этой задаче может возникнуть непонятный момент: что делать, когда арбуз всего один? Кому его нужно купить: себе или теще? Если рассуждать разумно (по жизни), то конечно лучше купить его себе, а теща обойдется и без арбуза. Но если следовать условиям задачи получается, что этот арбуз будет адресован как Ивану Васильевичу, так и его теще и в данном случае нужно выводить два одинаковых числа в качестве ответа.


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *