неділя, 14 грудня 2014 р.

2014 рік. Задачі 2 етапу Вінницької олімпіади з інформатики 8-9 клас

Задачі 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


Немає коментарів:

Дописати коментар