Суббота, 21.12.2024, 15:19
Информатика и математика в Плесской школе
Приветствую Вас Гость | RSS
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Школьный этап олимпиады по информатике 9-11 классы 2017-18 учебный год.

Задача 1. Покупка

Ручка стоила K рублей. Первого сентября стоимость ручки увеличилась ровно на P процентов. Определите, сколько ручек можно купить на S рублей после подорожания. Программа получает на вход три целых положительных числа. Первое число K – стоимость ручки в рублях до подорожания. Второе число P – величина подорожания ручки в процентах. Третье число S – имеющаяся сумма денег. Числа K и S не превосходят 107, число P не превосходит 100.

Program n1;

var k,p,s,n:longint;

begin

ReadLn(k);

ReadLn(p);

ReadLn(s);

k := 100 * k + p * k ;

writeln(100 * s div k);

end.

Задача 2. Плот

 

Посередине озера плавает плот, имеющий форму прямоугольника. Стороны плота направлены вдоль параллелей и меридианов. Введём систему координат, в которой ось OX направлена на восток, а ось ОY – на север. Пусть юго-западный угол плота имеет координаты (x1, y1), северо-восточный угол – координаты (x2, y2).

Пловец находится в точке с координатами (x, y). Определите, к какой стороне плота (северной, южной, западной или восточной) или к какому углу плота (северо-западному, северо-восточному, юго-западному, юго-восточному) пловцу нужно плыть, чтобы как можно скорее добраться до плота.

Программа получает на вход шесть чисел в следующем порядке: x1, y1 (координаты

  • угла плота), x2, y2 (координаты северо-восточного угла плота), x, y (координаты (x, y) пловца). Все числа целые и по модулю не превосходят 100. Гарантируется, что x1<x2, y1<y2, x ≠ x1, x ≠ x2, y ≠ y1, y ≠ y2, координаты пловца находятся вне плота.

Если пловцу следует плыть к северной стороне плота, программа должна вывести символ «N», к южной – символ «S», к западной – символ «W», к восточной – символ «E». Если пловцу следует плыть к углу плота, нужно вывести одну из

следующих строк: «NW», «NE», «SW», «SE».

 

program zadasja2;

var x,y,x1,y1,x2,y2:integer;

    s:string;

begin

 Write('Координата Х пловца =');ReadLn(x);

 Write('Координата Y пловца =');ReadLn(y);

 // координаты плота

 x1:=-1;

 y1:=-2;

 x2:=5;

 y2:=3;

 if  (y > y2) then s:=s+'N';

 if  (y < y1) then s:=s+'S';

 if  (x < x1) then s:=s+'W';

 if  (x > x2) then s:=s+'E';

 writeln ('Напрвыление на плот =',s);

end.

 

Задача 3. Пакуем чемоданы!

Алёна собирает вещи в отпуск. С собой в самолёт она может взять ручную кладь и багаж. Для ручной клади у Алёны есть рюкзак, а для багажа – огромный чемодан.

По правилам перевозки масса ручной клади не должна превосходить S кг, а багаж может быть любой массы (за сверхнормативный багаж Алёна готова доплатить). Разумеется, наиболее ценные вещи – ноутбук, фотоаппарат, документы и т. д. – Алёна хочет положить в ручную кладь.

Алёна разложила все свои вещи в порядке уменьшения их ценности и начинает складывать наиболее ценные вещи в рюкзак. Она действует следующим образом – берёт самый ценный предмет, и если его масса не превосходит S, то кладёт его в рюкзак, иначе кладёт его в чемодан. Затем она берёт следующий по ценности предмет, если его можно положить в рюкзак, то есть если его масса вместе с массой уже положенных в рюкзак вещей не превосходит S, то кладёт его в рюкзак, иначе в чемодан, и таким же образом процесс продолжается для всех предметов в порядке убывания их ценности. Определите вес рюкзака и чемодана после того, как Алёна сложит все вещи. Первая строка входных данных содержит число S – максимально разрешённый вес рюкзака. Во второй строке входных данных записано число N – количество предметов. В следующих N строках даны массы предметов, сами предметы перечислены в порядке убывания ценности (сначала указана масса самого ценного предмета, затем масса второго по ценности предмета и т. д.). Все числа натуральные, число S не превосходит 2×109, сумма весов всех предметов также не превосходит 2×109. Значение N не превосходит 105Программа должна вывести два числа – вес рюкзака и вес чемодана (вес пустого рюкзака и чемодана не учитывается).

 

program zadasja3;

var s1,s2,a,n,s,i:Integer;

begin

 Write('Масса ручной клади =');ReadLn(s);

 Write('Количество вещей = ');ReadLn(n);

 for i:=1 to n do

  begin

   Write('Введи массу',i,' вещи = ');ReadLn(a);

   if (s1 + a <= s) then s1:=s1+a else s2:=S2+a;

  end;

 writeln('Масса рюкзака =',s1:10);

 writeln('Масса рюкзака =',s2:10);

end.

Задача 4. Туристический налог

 

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

Турфирма хочет сэкономить на налоге, поэтому она хочет разработать туристический маршрут с минимальной величиной налога. При этом, поскольку маршрут является горным, он должен содержать подъём в гору и спуск с горы, то есть на маршруте должна быть точка, которая находится строго выше начала и конца маршрута.

 

Турфирма составила карту гор Авалона, содержащую информацию о высоте гор при передвижении с запада на восток. Высоты гор измерены в точках через равные расстояния. Найдите на данной карте гор Авалона туристический маршрут минимальной длины, удовлетворяющий условию наличия подъёма и спуска.

 

Первая строка входных данных содержит число N – количество точек на карте гор Авалона. СледующиеN строк содержат информацию о высоте гор в данных N точках при движении с запада на восток. Все числа натуральные, не превосходящие 105.

 

Программа должна вывести два числа – номер точки начала маршрута и номер точки окончания маршрута. Точки нумеруются от 1 до N. Если маршрута, удовлетворяющего условиям, не существует, программа должна вывести одно число 0.

Автор Воротников Илья (11 класс 2017 год)

Program n1;

varn:array[1..100000]of integer;

k,i,max:longint;

begin

max:=n[1];

Readln(k);

fori:=1 to k do Begin

Readln(n[i]);

end;

 

fori:=1 to k do Begin

if(n[i]>max)then

max:=n[i];

end;

if(max=n[1])or(max=n[k])then writeln(0)

else

for i:=1 to k do begin

if(n[i]=max)and(n[i]<>n[i-1]) then writeln(i-1);

if(n[i]=max)and(n[i]<>n[i+1])then writeln(i+1)

end;

end.

Задача 5. Делимость

Сегодня в школе на уроке математики проходят делимость. Чтобы продемонстрировать свойства делимости, учитель выписал на доске все целые числа от 1 до N в несколько групп, при этом если одно число делится на другое, то они обязательнооказались в разных группах. Например, если взять N = 10, то получится 4 группы.

Первая группа: 1. Вторая группа: 2, 7, 9. Третья группа: 3, 4, 10. Четвёртая группа: 5, 6, 8.

Вы уже догадались, что, поскольку любое число делится на 1, одна группа всегда будет состоять только из числа 1, но в остальном подобное разбиение можно выполнить различными способами. От вас требуется определить минимальное число групп, на которое можно разбить все числа от 1 до N в соответствии с приведённым выше условием.

Программа получает на вход одно натуральное число N, не превосходящее 109, и должна вывести одно число – искомое минимальное количество групп.

 Program n1;

Var a,n,p:LongInt;

begin

Write('n = ');ReadLn(n);

a:= 1;

p:= 1;

 while (2 * p <= n) do

                      begin

                       p:=p * 2;

                       a:=a + 1;

                     end;

Writeln('Групп ',a:10);

end. 

   Полный комплект материалов в формате .pdf 

Поиск
Календарь
«  Декабрь 2024  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Учительский портал
    Copyright MyCorp © 2024