Субота, 20.04.2024, 15:29
Головна Реєстрація RSS
Вітаю Вас, Гість
Наше опитування
Оцініть мій сайт
Всього відповідей: 68

Задача1. Пори року (10 балів)

По заданому номеру місяця в році визначити пору року.
Вхідні дані:
Введіть натуральне число N (N≤100) – номер місяця.
Вихідні дані:
Виведіть для літніх місяців «Summer», для зимових – «Winter», для весняних – «Spring», для осінніх – «Autumn». Якщо число задано невірно і не відповідає можливому значенню місяця, то виведіть «Error».
Приклади:
 № Вхідні дані Вихідні дані
 1 3 Spring
 2 15 Error

Рішення:

var N: byte;
begin
 assign(input,'input.txt');
 reset(input);
 read(N);
 close(input);
 assign(output,'output.txt');
 rewrite(output);
 case N of
 12,1,2: write('Winter');
 3..5: write('Spring');
 6..8: write('Summer');
 9..11: write('Autumn')
 else write('Error')
 end;
 close(output)
end.
Тести:
 № Вхідні дані Вихідні дані Бал
 1 67 Error 2
 2 10 Autumn 2
 3 12 Winter 2
 4 6 Summer 2
 5 5 Spring 2

Задача 2. Перепис (15 балів)

В будинку живуть N жителів. Одного разу вирішили провести перепис всіх жителів будинку і склали список, в якому вказали вік і стать кожного жителя. Знайти номер найстаршого жителя чоловічої статі.
Вхідні дані:
У вхідному файлі INPUT.TXT в першому рядку задано натуральне число N – кількість жителів (N≤100). В наступних N строках міститься інформація про всіх жителів, кожний рядок містить два цілих числа: V та S – вік і стать людини (1≤V≤100, S – 0 або 1). Чоловічій статі відповідає значення S=1, а жіночій – S=0.
Вихідні дані:
Вихідний файл OUTPUT.TXT має містити номер найстаршого чоловіка в списку. Якщо таких жителів декілька, слід вивести найменший номер. Якщо жителів чоловічої статі немає, то виведіть -1.
Приклад:
 № Вхідні дані Вихідні дані Бал
 1



 3
 34 1
 59 1
 99 0
 2



 5



Рішення:

var N,V,S,i,max,nmax: byte;
begin
 assign(input,'input.txt');
 reset(input);
 readln(N);
 max:=0;
 for i:=1 to N do
 begin
 readln(V,S);
 if (V>max)and(S=1) then begin
 max:=V;
 nmax:=i
 end
 end;
 close(input);
 assign(output,'output.txt');
 rewrite(output);
 if max=0 then write(-1)
 else write(nmax);
 close(output)
end.
Тести:
 № Вхідні дані Вихідні дані Бал
 1




 4
 25 1
 70 1
 100 0
 3 1
 2




 5




 2




 4
 25 0
 70 0
 100 0
 3 0
 -1




 5




 3





 5
 65 1
 53 1
 92 1
 33 1
 92 1
 3





 5





Задача 3. Годинник (20 балів)

Старовинний годинник б'є щопівгодини. Причому на початку кожної години він б'є стільки раз, скільки годин (по 1 разу – в час ночі і в час дня, по 2 рази – в дві години ночі та в дві години дня і так далі, опівночі і опівдні вони б'ють, відповідно, по 12 разів). І ще 1 раз вони б'ють в середині кожної години.
Дано проміжок часу (відомо, що пройшло строго менше 24 годин). Напишіть програму, що визначає, скільки ударів зробив годинник за цей час.
Вхідні дані:
У вхідному файлі INPUT.TXT у першому рядку записаний початковий момент часу, в другому рядку — кінцевий. Моменти часу задаються двома цілими числами, що розділяються пропуском. Перше число задає години (від 0 до 23), друге - хвилини (від 1 до 59, при цьому воно не дорівнює 30).
Вихідні дані:
У вихідний файл OUTPUT.TXT виведіть одне число — скільки ударів зробив годинник за цей відрізок часу.
Приклад:
 № Вхідні дані Вихідні дані Бал
 1

 5 20
 10 25
 45

 5

 2

 10 25
 5 20
 135

 5

 3

 5 2
 5 21
 0

 5

Рішення:

var gp,hp,gk,hk: byte;
 i,xp,xk,T,N,p: integer;
begin
 assign(input,'input.txt');
 reset(input);
 readln(gp,hp);
 read(gk,hk);
 close(input);
 assign(output,'output.txt');
 rewrite(output);
 if gk720 then T:=i-720
 else T:=i;
 if T mod 60 = 0
 then begin
 N:=T div 60;
 if N>12 then dec(N,12);
 inc(p,N)
 end
 else if T mod 30 = 0
 then inc(p)
 end;
 write(p);
 close(output)
end.
Тести:
 № Вхідні дані Вихідні дані Бал
 1

 5 20
 10 25
 45

 5

 2

 10 25
 5 20
 135

 5

 3

 5 2
 5 21
 0

 5

 4

 0 0
 1 0
 14

 5

Задача 4. Шаховий кінь (25 балів)

Вася вирішив навчитися грати в шахи. Він знайшов книгу з записами партій і уважно їх вивчає. Можливо, колись Вася стане великим шахістом, але поки що він навчається в початковій школі, і йому нелегко дається шахова нотація. Найскладнішим для Васі виявились ходи шахового коня. Він просить написати програму, яка зможе повідомити Васі, на які клітинки можна походити конем із заданої клітинки.
Ви, напевно, теж знаєте, що кінь в шахах завжди переміщується або на дві клітинки по горизонталі та на одну по вертикалі, або на одну по горизонталі та на дві по вертикалі. Вертикалі позначаються маленькими латинськими літерами від a до h, а горизонталі - цифрами от 1 до 8. Кожна клітинка на шаховій дошці позначається літерою відповідної вертикалі и цифрою відповідної горизонталі, наприклад, c6 або e2.
Вхідні дані:
У вхідному файлі INPUT.TXT записано 2 символи – координати клітинки, де стоїть кінь.
Вихідні дані:
У вихідному файлі OUTPUT.TXT в довільному порядку виведіть всі координати клітинок, на які за один хід може попасти кінь, який знаходиться на заданій клітинці.
Приклади:
 № Вхідні дані Вихідні дані
 1





 e2





 c1
 c3
 d4
 f4
 g1
 g3
 2

 a1

 b3
 c2

Рішення:

const c='abcdefgh';
var x,y: byte;
 S,R: char;
 p: integer;
begin
 assign(input,'input.txt');
 reset(input);
 read(S,R);
 close(input);
 assign(output,'output.txt');
 rewrite(output);
 val(R,x,p);
 y:=pos(S,c);
 if (y-2>0)and(x-1>0) then writeln(c[y-2],x-1);
 if (y-2>0)and(x+1<9) then writeln(c[y-2],x+1);
 if (y-1>0)and(x-2>0) then writeln(c[y-1],x-2);
 if (y-1>0)and(x+2<9) then writeln(c[y-1],x+2);
 if (y+1<9)and(x-2>0) then writeln(c[y+1],x-2);
 if (y+1<9)and(x+2<9) then writeln(c[y+1],x+2);
 if (y+2<9)and(x-1>0) then writeln(c[y+2],x-1);
 if (y+2<9)and(x+1<9) then writeln(c[y+2],x+1);
 close(output)
end.
Тести:
 № Вхідні дані Вихідні дані Бал
 1





 e2





 c1
 c3
 d4
 f4
 g1
 g3
 5





 2

 a1

 b3
 c2
 5

 3


 a2


 b4
 c1
 c3
 5


 4







 e5







 f7
 g6
 d7
 c6
 c4
 d3
 f3
 g4
 5







 5



 h5



 g7
 f6
 f4
 g3
 5



Задача 5. «Нафтові плями» (30 балів)

Після аварії на морській нафтовій свердловині в океан вилилося багато нафти. Вона розтеклася по воді, після чого утворилася певна кількість нафтових плям. Для ліквідації наслідків аварії було створено штаб з координації дій. Співробітники штабу зберігають інформацію про плями в комп'ютері у вигляді матриці розмірністю M x N. Комірка матриці містить 0, якщо нафтова пляма в цих координатах відсутня та 1, якщо наявна (2≤M,N≤100). У матриці комірки плям не можуть дотикатися одна до одної ні сторонами, ні кутами.
Для полегшення ліквідації наслідків аварії потрібно написати програму, яка знаходитиме загальну кількість плям та кількість плям з однаковою площею.
Вхідні дані:
Вхідний текстовий файл INPUT.TXT містить в першому рядку два числа M та N, далі слідують M рядків, у кожному по N цілих чисел розділених пропусками – елементи матриці.
Вихідні дані:
Вихідний текстовий файл OUTPUT.TXT містить у першому рядку ціле число k - загальну кількість плям, далі у кожному з рядів міститься по два числа, перше – площа плями, друге – їх кількість. Дані посортувати по площах в порядку зростання.
Приклад:
 №  Вхідні дані  Вихідні дані
 1





 5 5
 1 0 1 0 0
 0 0 1 1 0
 1 0 0 0 0
 1 0 0 0 1
 1 0 1 0 1
 5
 1 2
 2 1
 3 2


Рішення:

type massiv=array[0..101,0..101] of byte;
var a: massiv;
 i,j,M,N,k,T,p,R,o: byte;
 b: array[1..1000] of integer;
procedure Poshuk(var a: massiv; x,y: byte);
begin
 if a[x,y]=1 then
 begin
 a[x,y]:=0;
 inc(p);
 Poshuk(a,x-1,y);
 Poshuk(a,x-1,y+1);
 Poshuk(a,x,y+1);
 Poshuk(a,x+1,y+1);
 Poshuk(a,x+1,y);
 Poshuk(a,x+1,y-1);
 Poshuk(a,x,y-1);
 Poshuk(a,x-1,y-1);
 end;
end;
begin
 assign(input,'input.txt');
 reset(input);
 readln(M,N);
 for i:=1 to M do
 for j:=1 to N do
 read(a[i,j]);
 close(input);
 assign(output,'output.txt');
 rewrite(output);
 T:=0;
 for i:=1 to M do
 for j:=1 to N do
 if a[i,j]=1 then
 begin
 p:=0;
 Poshuk(a,i,j);
 inc(T);
 b[T]:=p
 end;
 writeln(T);
 for i:=1 to T-1 do
 for j:=i+1 to T do
 if b[i]>b[j]
 then begin
 o:=b[i];
 b[i]:=b[j];
 b[j]:=o
 end;
 R:=1;
 for i:=1 to T do
 if b[i]=b[i+1]
 then inc(R)
 else begin
 writeln(b[i],' ',R);
 R:=1
 end;
 close(output)
end.
Тести:
 №  Вхідні дані  Вихідні дані  Бал
 1





 5 5
 1 0 1 0 0
 0 0 1 1 0
 1 0 0 0 0
 1 0 0 0 1
 1 0 1 0 1
 5
 1 2
 2 1
 3 2


 6





 2





 5 5
 1 1 1 0 0
 0 0 0 0 1
 1 1 1 0 0
 1 0 0 0 1
 1 0 1 0 1
 5
 1 2
 2 1
 3 1
 5 1

 6





 3





 5 5
 1 1 1 1 1
 1 1 1 1 1
 1 1 1 1 1
 1 1 1 1 1
 1 1 1 1 1
 1
 25 1




 6





 4





 5 5
 0 0 0 0 0
 0 0 0 0 0
 0 0 0 0 0
 0 0 0 0 0
 0 0 0 0 0
 0





 6





 5





 5 5
 1 1 1 1 1
 1 0 0 0 1
 1 0 0 0 1
 1 0 0 0 1
 1 1 1 1 1
 1
 16 1




 6





Наверх