Задачі 2
етапу Вінницької олімпіади з інформатики
за 14 грудня
2014 року 8-9
клас
2. Задача
Forecast. Василько та Юлія грають в таку гру. Спочатку кожен записує на
папері свій прогноз – число від 1 до 6. Потім вони кидають гральний кубик з
числами від 1 до 6 на гранях. Чий прогноз виявляється ближчим до того числа, що
випало, той і переміг. Треба написати програму для визначення переможця.
Технічні
умови. Програма Forecast читає з пристрою
стандартного введення три числа через пропуски (пробіли) – прогноз Василька,
Юлі та результат кидання кубика. Програма виводить “V”, якщо переміг Василько,
“J” якщо Юлія або ”D” – якщо прогноз обох однаково близький до результату
(тобто переможця виявити неможливо.
Приклади
Введення
|
Виведення
|
3 4 5
1 6 2 4 4 3 |
J
V D |
Program Forecast
var a,b,c:integer;
BEGIn
read(a,b,c);
if ((abs(c-a))>(abs(c-b))) then write('J');
if ((abs(c-a))<(abs(c-b))) then write('V');
if ((abs(c-a))=(abs(c-b))) then write('D');
end.
Задачі 2
етапу Вінницької олімпіади з інформатики
За 14 грудня 2014 року 8-9 клас
3. Задача Сandy. На
вулиці Сонячній треба побудувати 3 будинки, з відомою кількістю поверхів у
кожному. Але краєвид буде зіпсовано, якщо кількість поверхів у будь-яких двох з
них відрізняється більше, ніж на Z. Архітектор може зменшити в якомусь з
будинків кількість поверхів на 1, але обов’язково при цьому збільшити на 1
поверх в іншому, зробивши новий проект. Потрібно зробити так, аби краєвид не
був зіпсований.
Технічні умови. Програма
Сandy читає з пристрою стандартного введення чотири невід'ємних цілих числа b1,
b2, b3 , Z через пропуск, кожне з них не більше за
109 - кількість поверхів у кожному з будинків згідно першого
проекту та дозволену різницю між кількістю поверхів. Програма виводить одне
число – мінімальну к-сть перероблених проектів, Якщо зберегти краєвид неможливо,
вивести - 1.
Приклад
Введення
|
Виведення
|
1 6 3 2
|
2
|
Program Candy;
var
a,b,c,z,min,max,k,mini,maxi : longint;
mas : array [1..3] of
integer;
BEGIN
read(a,b,c,z);
k:=0;
mas[1]:=a; mas[2]:=b; mas[3]:=c;
while (
(abs(mas[1]-mas[2]) > z) or (abs(mas[1]-mas[3]) > z) or
(abs(mas[2]-mas[3]) > z) ) do
begin
if mas[1]>=mas[2] then begin
max:=mas[1]; maxi:=1; min:=mas[2]; mini:=2; end
else begin
max:=mas[2]; maxi:=2; min:=mas[1]; mini:=1; end;
if mas[3]>max then begin max:=c; maxi:=3; end;
if mas[3]<min then begin min:=c; mini:=3; end;
dec(max); inc(min); inc(k); mas[mini]:=min;
mas[maxi]:=max; end;
writeln(k); readln; END.
Задачі 2 етапу Вінницької олімпіади з інформатики
За 14 грудня 2014 року 8-9 клас
1. Newprize. Три учні
за перемогу у конкурсі повинні розіграти між собою один приз – одна запакована
коробка з призом. Є ще 2 такі самі, але порожніх коробки. Спочатку кожен має по
одній коробці. Потім вони починають швиденько обмінюватися коробками один з
другим у певному порядку. Переможцем стає той, у кого опиниться коробка з
призом після усіх обмінів.
Технічні умови. Програма читає з пристрою стандартного
введення два числа P та K (1 <= P <= 3, 0 <= K <= 100), що відповідно
вказують на номер учня, що спочатку отримав коробку з премією та кількість
обмінів а далі K пар чисел а і b (1 <= a, b <= 3, a <> b) - номери
учнів, що мінялися коробками на даному кроці. Програма виводить одне число –
номер переможця, якому дістався коробка з премією.
Приклад
Введення
|
Виведення
|
1 5
1 2 1 3 3 2
13
12
|
2
|
Розв’язання
var a,v,u: integer;
b: array [1..100,1..3] of integer;
c: array [1..100,1..3] of integer; x, z,f, p,k,i,j: integer;
begin writeln(' '); read(p, k);
for i:=1 to k do
for j:=1 to 3 do begin
c[i,j]:=0; b[i,j]:=0; end;
for i:=1 to k do begin read(x, z);
if x=1 then c[i,1]:=1;
if x=2 then c[i,2]:=2;
if x=3 then c[i,3]:=3;
if z=1 then b[i,1]:=1; if z=2 then b[i,2]:=2; if z=3 then
b[i,3]:=3; end;
for i:=1 to k do begin v:=c[i,1]+c[i,2]+c[i,3]; u:=b[i,1] +b[i,2]+b[i,3];
if v=p then p:=u else if
(v<>p)and(u<>p) then p:=p else if u=p then p:=c[i,1]+c[i,2]+c[i,3]; end; write(p);
writeln; end.
Задачі 2 етапу Вінницької олімпіади з інформатики
За 14 грудня 2014 року 8-9 клас
4.Задача Songs. Петро
записав на листочку кількість пісень у своїй фонотеці, але трішки прибрехав -
хай друзі заздрять. Та совість замучила, і він зробив запис (знову не дуже
чесний ;-) коротшим на одну цифру. Але викреслив одну цифру так, щоб число, яке
залишилося, було найбільшим.
Технічні умови. Програма Songs читає з пристрою
стандартного введення одне ціле значення n (10<=n<=99999), і виводить на
пристрій стандартного виведення число без однієї цифри (це число має бути
найбільшим серед усіх можливих варіантів закреслень цифри).
Приклади
Введення
|
Виведення
|
431
138
|
43
38
|
Немає коментарів:
Дописати коментар