Олимпиада по информатике 2016
II этап Всеукраинской олимпиады по информатике для 8-11 классов.
Содержание
Волшебная палочка
Однажды в новогоднюю ночь в дом, где обитал маленький Саша со своими родителями и старшим братом, зашел Йоулупукки — настоящий Дед Мороз аж из самой Финляндии. Перед новым годом Саша написал письмо Деду Морозу и попросил у него интересную игрушку. Йоулупукки подарил Саше «волшебную палочку». Старший брат очень быстро придумал игру для младшего брата с «волшебной палочкой», т.к. это была лазерная указка. Он нарисовал на доске линию и Саше нужно было попасть лучем на полоску (точное попадание), или на линию на которой полоска была расположена (попадание).
Создайте программу, которая бы выводила результаты игры мальчиков: количество точных попаданий, количество попаданий, количество промахов.
Входные данные
В файле input.txt полоска задается своими координатами — это 1-я и 2-я строки — целые числа (x1;y1) и (x2;y2), абсолютные значения которых не превышают 100. Концы полоски не совпадают.
3-я строчка — N≤20 — количество попыток.
Остальные N строк — координаты точек при попытках попасть (ai;bi) — целые числа |ai|≤100, |bi|≤100.
Выходные данные
В файле output.txt — три числа: количество точных попаданий, количество попаданий, количество промахов.
Числа в строках отделяются пробелом.
Пример входных и выходных данных
input.txt | output.txt |
---|---|
1 1 4 4 3 1 2 2 2 5 5 |
1 1 1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// Волшебная палочка var x1,y1,x2,y2,i,k,n,m,z:integer; d1,d2,d3,d4:real; a,b:array[1..100] of integer; input,output:text; begin assign(input,'input.txt'); reset(input); readln(input,x1,y1); readln(input,x2,y2); readln(n); for i:=1 to n do readln(input,a[i],b[i]); close(input); assign(output,'output.txt'); rewrite(output); k:=0;m:=0;z:=0; if (x1<>x2) or (y1<>y2) then begin for i:=1 to n do begin d1:=sqrt(sqr(x2-x1)+sqr(y2-y1)); d2:=sqrt(sqr(a[i]-x1)+sqr(b[i]-y1)); d3:=sqrt(sqr(a[i]-x2)+sqr(b[i]-y2)); d4:=d2+d3; if (abs(d1-d4)<=0.001) then m:=m+1 else z:=z+1 end; end; writeln(output,k,' ',m,' ',z); close(output); end. |
Пришельцы
Представьте себе, что в вашу школу прилетели пришельцы и во время знакомства сообщили, что умеют умножать только по два числа и только в системах счисления с основанием меньшим 10, при этом одно число всегда должно быть однозначным. А результат им нужен только в десятичной системе счисления, но они забыли как получить такое число, потому и прилетели в вашу школу.
Помогите пришельцам справиться с проблемой и улететь назад на свою планету.
Создайте программу, которая сможет выполнять умножение как это делают пришельцы и переводить результат в десятичную систему счисления.
Входные данные
В файле input.txt: 1-я строка — два целых числа (через пробел): одно из которых однозначное, а второе не больше 100000000.
2-я строка — одно число — основа системы счисления p (0<p<10).
Выходные данные
Файл output.txt содержит: 1-я строка — произведение в соответствующей системе счисления, 2-я строка — результат в десятичной системе счисления.
Пример входных и выходных данных
input.txt | output.txt |
---|---|
5413 4 6 |
34500 4932 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
// Пришельцы var c,a,p:byte; x,k,z,rez,new_n,n,m,k1,rez2:longint; input,output:text; begin assign(input,'input.txt'); reset(input); readln(input,n,m); readln(input,p); close(input); assign(output,'output.txt'); rewrite(output); if m>n then begin x:=n; n:=m; m:=x; end; k:=1; c:=0; rez:=0; new_n:=n; while new_n>0 do begin a:=(new_n mod 10)*m+c; if a>=p then begin c:=a div p; a:=a mod p; end else c:=0; rez:=rez+k*c; writeln(output, rez); m:=1; rez2:=0; begin while rez>0 do begin rez2:=rez2+(rez mod 10)*m; rez:=rez div 10; m:=p*m; end; writeln(output,rez2); close(output); end; end; end. |
Братья
Было у отца три сына: Петру a лет, Ивану b лет, а Сергею — c лет. Определите, кто из братьев средний. Результат вывести на экран.