Sunteți pe pagina 1din 12

Olimpiada Republicană la Informatică 2009 Clasele 10−12

Descrierea problemelor

Clasele 10 − 12

Numărul de Denumirea Denumirea


Denumirea Denumirea
puncte alocat fişierului de fişierului de
problemei fişierului sursă
problemei intrare ieşire

Conjectura lui
100 CONJECT.PAS CONJECT.IN CONJECT.OUT
Goldbach

Corăbii 100 CORABII.PAS CORABII.IN CORABII.OUT

Oraşe 100 ORASE.PAS ORASE.IN ORASE.OUT

Multimicro-
100 MULTI.PAS MULTI.IN MULTI.OUT
procesoare

Total 400 - - -

1 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Описание задач

Классы 10 − 12

Количество Имя Имя Имя


Название
очков для исходного входного выходного
задачи
каждой задачи файла файла файла

Конъектура
100 CONJECT.PAS CONJECT.IN CONJECT.OUT
Гольдбаха

Корабли 100 CORABII.PAS CORABII.IN CORABII.OUT

Города 100 ORASE.PAS ORASE.IN ORASE.OUT

Многопро-
цессорные 100 MULTI.PAS MULTI.IN MULTI.OUT
компьютеры

Всего 400 - - -

2 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Conjectura lui Goldbach

Sunt multe afirmaţii matematice, care sunt confirmate de evidenţa empirică, dar care nu sunt
încă demonstrate. Una din ele este celebra Conjectură1 a lui Goldbach: “Orice număr întreg impar,
mai mare decât 5, poate fi scris ca sumă de 3 numere prime”.

Renumitul matematician Leonhard Euler, devenind interesat de această problemă, a stabilit o


Conjectură şi mai puternică: “Orice număr întreg par, mai mare decât 2, poate fi scris ca sumă de
două numere prime”.

Exemple:
4 = 2+2; 12 = 5 + 7 ;
6 = 3+3; 14 = 7 + 7 = 3 + 11 ;
8 = 5+3; ...
10 = 5 + 5 = 3 + 7 ; 100 = 97 + 3 .
Euler nu a reuşit să demonstreze Conjectura lui Goldbach şi, de fapt, nimeni nu a reuşit acest
lucru până în prezent, insă exemple, care ar demonstra contrariul, nu au fost găsite.

Sarcină. Elaboraţi un program, care reprezintă orice număr întreg, par mai mare decât 2 ca o
sumă de două numere prime.

Date de intrare. Fişierul text CONJECT.IN conţine pe o singură linie numărul întreg par n.

Date de ieşire. Fişierul text CONJECT.OUT va conţine pe o singură linie două numere prime,
separate prin spaţiu, suma cărora este egală cu n. Ordinea de apariţie a numerelor prime în fişierul
de ieşire nu contează. Dacă problema are mai multe soluţii, în fişierul de ieşire se va scrie doar una,
oricare din ele.

Exemplu.
CONJECT.IN CONJECT.OUT
14 3 11

Restricţii. 2 < n ≤ 254 . Timpul de execuţie nu va depăşi 0,5 secunde. Programul va folosi cel
mult 32 Megaocteţi de memorie operativă. Fişierul sursă va avea denumirea CONJECT.PAS.

1
Părere întemeiată pe presupuneri, pe probabilităţi, pe aparenţe. Această conjectură a fost formulată de matematicianul
german Christian Goldbach (1690–1764) într-o scrisoare trimisă renumitului om de ştiinţă Leonhard Euler.

3 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Конъектура Гольдбаха

Существют много математических высказываний, истинность которых подтверждается


повседневным опытом, но еще не доказано наукой. Одним из таких высказываний является
знаменитая Конъектура2 (гипотезa) Гольдбаха: “Каждое нечётное число большее 5 можно
представить в виде суммы трёх простых чисел”.

Заинтересовавшись этой задачей, знаменитый математик Леонард Эйлер


сформулировал более сильную конъектуру: “ Любое чётное число большее двух можно
представить в виде суммы двух простых чисел”.

Примеры:

4 = 2+2; 12 = 5 + 7 ;
6 = 3+3; 14 = 7 + 7 = 3 + 11 ;
8 = 5+3; ...
10 = 5 + 5 = 3 + 7 ; 100 = 97 + 3 .

Эйлер не смог доказать Конъектуру Гольдбаха, причем, несмотря на усилия многих


математиков, до сегоднешнего дня оно остается недоказанной. Однако примеры,
опровергающие Конъектуру Гольдбаха, неизвестны.

Задание. Напишите программу которая представляет любое чётное число большее


двух в виде суммы двух простых чисел.

Входные данные. Техстовый файл CONJECT.IN содержит в единственной строке


целое четное число n.

Выходные данные.
Техстовый файл CONJECT.OUT должен содержать в
единственной строке два простых числа, разделенныe пробелом, сумма которых равно n.
Порядок появления простых чисел в выходном файле является произвольным. Если задача
имеет несколько решений, в выходном файле зыписывается только одно, любое из них.

Пример.
CONJECT.IN CONJECT.OUT
14 3 11

Ограничения. 2 < n ≤ 254 . Время выполнения программы не должно


превышать 0,5 секунд. Oбьем используемой оперативной памяти не должен превышать
32 Мегабайт. Исходный файл должен иметь имя CONJECT.PAS.

2
Предположение, догадка, основанные на повседневном опыте. Рассматриваемя конъектура была
сформулирована немецким математиком Кристианом Гольдбахом (1690–1764) в письме к знаменитому
ученному Леонарду Эйлеру.

4 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Corăbii

Un satelit realizează fotografia unei porţiuni de mare, pe care se află mai multe corăbii.
Fotografia, prelucrată de calculator, conţine zone de culoare întunecata, ce reprezintă marea, şi zone
de culoare deschisă, ce reprezintă corabiile.

Pe această fotografie fiecare corabie este reprezentată printr-un dreptunghi de culoare


deschisă, vârfurile căruia au coordonate întregi, şi laturile paralele cu axele de coordonate. Două
corabii sunt considerate de acelaşi tip dacă au aceleaşi dimensiuni. Corăbiile de acelaşi tip poate
apărea pe fotografie şi fiind rotite cu 90 de grade. Se garantează ca oricare două corăbii nu se ating
între ele în nici un punct.

În memoria calculatorului fotografia este reprezentată printr-un tablou cu n linii şi m coloane.


Fiecare din elementele tabloului poate lua valoarea ’x’ (microzonă de culoare deschisa) sau ’-’
(microzonă de culoare închisa). Dreptunghiul ce reprezintă o corabie poate fi format din una sau din
mai multe microzone.

Sarcină. Elaboraţi un program care, avânt la intrare fotografia făcută de pe satelit, determină
câte tipuri de corăbii sunt pe mare şi numărul de corăbii de fiecare tip.

Date de intrare. Fişierul text CORABII.IN conţine pe prima linie numerele întregi n, m
separate prin spaţiu. Fiecare din următoarele n linii ale fişierului de intrare conţine câte m caractere
ce reprezintă microzonele respective ale fotografiei.

Date de ieşire: Fişierul de ieşire CORABII.OUT va conţine pe prima linie un număr întreg k
− numărul de tipuri de corabii detectate. Linia a doua a fişierului de ieşire trebuie să conţină k
numere întregi pozitive, separate prin spaţiu, reprezentând numărul de corăbii de fiecare tip.
Ordinea in care sunt scrise aceste numere nu contează.

Exemplu:
CORABII.IN CORABII.OUT
10 10 3
---------- 2 4 1
----xxx---
----xxx---
----------
--xx--x---
--xx------
--xx---x--
----------
--x-x-xxx-
----------

Restricţii: 1 ≤ n, m ≤100 . Lungimea laturii oricărui dreptunghi ce reprezintă o corabie este


intre 1 si 10 microzone. Timpul de execuţie nu va depăşi 0,1 secunde. Programul va folosi cel mult
32 Megaocteţi de memorie operativă. Fişierul sursă va avea denumirea CORABII.PAS.

5 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Корабли

Рассматривается спутниковая фотография, на которой изображен участок моря и


находящиеся на нем корабли. Фотография, обработанная на компьютере, состоит из темных
и светлых участков. Темные участки представляют водную поверхность, а светлые − корабли.

На фотографии каждый корабль представлен светлым прямоугольником, вершины


которого имеют целочисленные координаты, а стороны паралельны координатным осям. По
определению, два корабля являются однотипными, если они имеют одинаковые размеры. О
общем случае, однотипные корабли могут быть развернуты друг относительно друга на 90
градусов. Корабли не имеют общих точек.

В памяти компьютера фотография представлена массивом из n строк и m столбцов.


Каждый элемент массива может иметь значение ’x’ (светлая микрозона) или ’-’ (темная
микрозона). Прямоугольник, представляющий некоторый корабль, может быть образован из
одной или из большего числа микрозон.

Задание. Напишите программу которая находит число типов кораблей и число


кораблей каждого типа.

Входные данные. Техстовый файл CORABII.IN содержит в первой строке целые


числа n и m, разделенные пробелом. Кажлая из следующих n строк входного файла содержит
по m символов, представляющих соответствующие микрозоны фотографии.

Выходные данные. Техстовый файл CORABII.OUT должен содержать в первой


строке целое число k − число типов найденных кораблей. Вторая строка выходного файла
должна содержать k целых чисел разделенных пробелами, представляющих число кораблей
каждого типа. Порядок записи указанных чисел в выходной файл является произвольным.

Пример:
CORABII.IN CORABII.OU
T
10 10 3
---------- 2 4 1
----xxx---
----xxx---
----------
--xx--x---
--xx------
--xx---x--
----------
--x-x-----
------xxx-

Ограничения: 1 ≤ n, m ≤100 . Длина сторон прямоугольников, представляющих


корабли, находится в интервале от 1 до 10 микрозон. Время выполнения программы не
должно превышать 0,1 секунды. Oбьем используемой оперативной памяти не должен
превышать 32 Мегабайт. Исходный файл должен иметь имя CORABII.PAS.

6 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Oraşe

Cunoaştem cu toţii jocul „Oraşe”. În acest joc, primul jucător pronunţă o denumire de oraş, de
exemplu, „ORHEI”. Aceasta denumire se termină cu litera „I”. Jucătorul al doilea trebuie să
pronunţe o denumire de oraş, care se începe anume cu această literă, de exemplu,
„INDIANAPOLIS”. În continuare, primul jucător trebuie să pronunţe o denumire de oraş, care se
începe cu litera „S”, de exemplu, „STRASBOURG”. Evident, în continuare, jucătorul al doilea va
trebui să pronunţe o denumire de oraş, care începe cu „G” ş.a.m.d. Repetarea denumirilor de oraşe
este interzisă.
Sarcină. Se consideră n denumiri distincte de oraşe. Scrieţi un program care, în condiţiile
jocului de mai sus, construieşte un şir, ce conţine un număr maximal de denumiri de oraşe.
Date de intrare. Fişierul text ORASE.IN conţine pe prima lini numărul întreg n. Fiecare din
următoarele n linii ale fişierului de intrare conţine câte un şir de caractere, ce reprezintă o denumire
de oraş.

Date de ieşire. Fişierul text ORASE.OUT va conţine pe prima linie numărul întreg k – numărul
maximal de denumiri de oraşe din şirul construit. Fiecare din următoarele k linii ale fişierului de
ieşire conţine câte un şir de caractere, ce reprezintă o denumire de oraş. Ordinea de apariţie a
denumirilor de oraşe în fişierul de ieşire corespunde condiţiilor jocului de mai sus. Dacă problema
are mai multe soluţii, în fişierul de ieşire se va indica doar una din ele.

Exemplu.
ORASE.IN ORASE.OUT
5 3
ORHEI ORHEI
CHISINAU INDIANAPOLIS
STRASBOURG STRASBOURG
INDIANAPOLIS
REZINA

Restricţii. 2 ≤ n ≤ 15 . Denumirile de oraşe sunt formate din literele mari ale alfabetului latin
şi conţin de la 2 până la 30 de caractere. Timpul de execuţie nu va depăşi 2,0 secunde. Programul va
folosi cel mult 32 Megaocteţi de memorie operativă. Fişierul sursă va avea denumirea ORASE.PAS.

7 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Города

Широко известна игра „Города”. Называется какой-нибудь город, допустим, „ORHEI”.


Кончается на „I”, значит требуется назвать другой город, у которого в названии первая буква
„I”. Это может быть „INDIANAPOLIS”. Следующий город должен начинаться на „S”,
например, „STRASBOURG” и т.д. Запрещено повторять название городов.
Задание. Рассматриваются n названий городов. Напишите программу, которая из
набора названий городов (все названия разные) строит цепочку максимальной длины.
Входные данные. Техстовый файл ORASE.IN содержит в первой строке целое
число n. Каждая из n следующих строк входного файла содержит по одной символьной
строке, представлящей название города.
Выходные данные. Техстовый файл ORASE.OUT должен содержать в первой строке
целое число k – максимальное число названий городов построенной цепочки. Каждая из k
следующих строк выходного файла содержит по одной символьной строке, представлящей
название города. Порядок названий городов в выходном файле соответствует построенной
цепочке. Если существуют несколько решений, в выходной файл записывается только одно,
любое из них.

Пример.
ORASE.IN ORASE.OUT
5 3
ORHEI ORHEI
CHISINAU INDIANAPOLIS
STRASBOURG STRASBOURG
INDIANAPOLIS
REZINA

Ограничения. 2 ≤ n ≤ 15 . Названия городов состоят из больших букв латинского


алфавита и содержат от 2 до 30 букв. Время выполнения программы не должно
превышать 2,0 секунд. Oбьем используемой оперативной памяти не должен превышать
32 Мегабайт. Исходный файл должен иметь имя ORASE.PAS.

8 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Multimicroprocesoare

Este cunoscut faptul, că capacitatea de prelucrare a calculatoarelor moderne poate fi mărită


prin includerea în componenţa acestora a mai multor microprocesoare. În astfel de calculatoare, un
microprocesor prelucrează datele numerice, un alt microprocesor prelucrează informaţia grafică, un
al treilea procesor prelucrează informaţia sonoră ş.a.m.d. Pentru a face schimb de date între ele,
microprocesoarele sunt reunite prin conductoare.
Presupunem, că un calculator personal conţine n microprocesoare, notate prin m1, m2, ..., mn.
Prin rij vom nota numărul de conductoare între microprocesoarele mi şi mj. Evident, rij = rij şi
rii = 0 .
În interiorul calculatorului, microprocesoarele m1, m2, ..., mn pot fi instalate în anumite poziţii,
notate prin p1, p2, ..., pn. Prin dkl vom nota distanţa între poziţiile pk şi pl (vezi desenul). Evident,
d kl = d lk şi d kk = 0 .

p1 p2 p1 p2

m1 m3 m2

p3 p3
m2 m3
m1

microprocesoarele poziţiile o posibilă variantă


de instalare

Sarcină. Elaboraţi un program care determină poziţiile în care vor fi instalate


microprocesoarele, cu condiţia ca lungimea sumară a conductorilor să fie minimală.
Date de intrare. Fişierul text MULTI.IN conţine pe prima lini numărul întreg n. Fiecare din
următoarele n linii ale fişierului de intrare conţine câte n numere întregi, separate prin spaţiu. Linia
(i +1) a fişierului de intrare conţine numerele întregi ri1, ri2, ..., rin.

În continuare, în fişierul de intrare se conţin n linii cu câte n numere întregi, separate prin
spaţiu. Linia (n +k +1) a fişierului de intrare conţine numerele întregi dk1, dk2, ..., dkn, separate prin
spaţiu.

Date de ieşire. Fişierul text MULTI.OUT va conţine pe prima linie numerele întregi q1, q2, ...,
qn, separate prin spaţiu. Aceste numere indică poziţiile în care sunt instalate microprocesoarele,
respectiv, m1, m2, ..., mn, cu condiţia că lungimea sumară a conductorilor este minimală. Linia a
doua a fişierului de ieşire va conţine numărul întreg Lmin – lungimea sumară minimală a
conductorilor ce reunesc microprocesoarele. Dacă problema admite mai multe variante de instalare,
în fişierul de ieşire se va indica doar una din ele.
(vezi pagina următoare)

9 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Многопроцессорные компьютеры

Как известно, производительность современных компьютеров можно повысить путем


использования не одного, а большего числа микропроцессоров. В таких компьютерах один
процессор обрабатывает числовые данные, другой процессор − графическую информацию,
третий процессор − звуковую информацию и т.п. С целью обмена данными,
микропроцессоры соеденены между собой проводниками.
Рассматривается персональный компьютер, содержащий n микропроцессоров, которые
обозначены через m1, m2, ..., mn. Через rij обозначим число проводников между
микропроцессорами mi и mj. Очевидно, rij = rij и rii = 0 .
Внутри персонального компьютера, микропроцессоры m1, m2, ..., mn могут быть
установлены в специальные позиции, обозначенные через p1, p2, ..., pn. Через dkl обозначим
растояние между позициями pk и pl (см. рисунок). Очевидно, d kl = d lk и d kk = 0 .

p1 p2 p1 p2

m1 m3 m2

p3 p3
m2 m3
m1

один из возможных
микропроцессоры позиции
вариантов установки
микропроцессоров

Задание. Разработайте программу, которая находит такие позиции для установки


микропроцессоров, при которых суммарная длина проводников является минимальной.
Входные данные. Техстовый файл MULTI.IN содержит в первой строке целое
число n. Каждая из следующих n строк входного файла содержит по n целых чисел,
разделенных пробелами. Строка (i +1) входного файла содержит целые числа ri1, ri2, ..., rin.
Далее, входной файл содержит n строк, в каждой из которых содержатся по n целых
чисел. Строка (n +k +1) входного файла содержит целые числа dk1, dk2, ..., dkn, разделенные
пробелами.

Выходные данные. Техстовый файл MULTI.OUT должен содержать в первой строке


целые числа q1, q2, ..., qn, разделенные пробелами. Числа q1, q2, ..., qn указывают позиции в
которые должны быть установлены микропроцессоры m1, m2, ..., mn соответственно, при
условии, что суммарная длина проводников минимальна. Вторая строка выходного файла
должна содержать целое число Lmin – минимальная суммарная длина проводников,
соединяющих микропроцессоры. Если существуют несколько решений, в выходной файл
записывается только одно, любое из них.

(смотри следующую страницу)

10 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Exemplu.
MULTI.IN MULTI.OUT
3 3 2 1
0 10 50 230
10 0 100
50 100 0
0 1 2
1 0 3
2 3 0

Restricţii. 3 ≤ n ≤ 9 , 0 ≤ rij ≤ 1000 , 1 ≤ d kl ≤ 1000 . Timpul de execuţie nu va depăşi 2,0


secunde. Programul va folosi cel mult 32 Megaocteţi de memorie operativă. Fişierul sursă va avea
denumirea MULTI.PAS.

11 / 12
Olimpiada Republicană la Informatică 2009 Clasele 10−12

Пример.
MULTI.IN MULTI.OUT
3 3 2 1
0 10 50 230
10 0 100
50 100 0
0 1 2
1 0 3
2 3 0

Ограничения. 3 ≤ n ≤ 9 , 0 ≤ rij ≤ 1000 , 1 ≤ d kl ≤ 1000 . Время выполнения


программы не должно превышать 2,0 секунд. Oбьем используемой оперативной
памяти не должен превышать 32 Мегабайт. Исходный файл должен иметь имя
MULTI.PAS.

12 / 12

S-ar putea să vă placă și