Задача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 gkТести:720 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 балів)

Для полегшення ліквідації наслідків аварії потрібно написати програму, яка знаходитиме загальну кількість плям та кількість плям з однаковою площею.
Вхідні дані:Вхідний текстовий файл 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 |