Сайт підготовки до олімпіади з інформатики

програмування в С++

Готуємось до олімпіадаи з інформатики - блок задач 1 PDF Печать E-mail
Добавил(а) Гісь Ігор Володимирович   
03.10.12 08:48

Задача 1. «Одиниці»

Умова. Дано ціле число I записане в десятковій системі числення.

Завдання. Написати програму ONE.*, яка порахує кількість одиниць в його двійковому записі.

Вхідні дані. Вхідний текстовий файл ONE.DAT містить в єдиному число I.

Вихідні дані. Вихідний текстовий файл ONE.SOL містить єдине ціле число - кількість одиниць.

 

Приклади файлів

 

ONE.DAT

ONE.SOL

7

3

 

 

 

Задача 2. «Нафтові плями»

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

Приклади файлів

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

OIL.DAT

OIL.SOL

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

 

 

 

 

 

 

 

 

Завдання. Для полегшення ліквідації наслідків аварії потрібно написати програму OIL.*, яка знаходитиме загальну кількість плям та кількість плям з однаковою площею.

Вхідні дані. Вхідний текстовий файл OIL.DAT містить в першому рядку два числа M та N, далі слідують M рядків, у кожному по N цілих чисел розділених пропусками - елементи матриці.

Вихідні дані. Вихідний текстовий файл OIL.SOL містить у першому рядку ціле число k - загальну кількість плям, далі у кожному з рядів міститься по два числа, перше - площа плями, друге - їх кількість. Дані посортувати по площах в порядку зростання.

 

Завдання 3. «Ламана»

Ім'я файлу програми: LAMAN.*

Ім'я вхідного файлу: LAMAN.DAT

Ім'я вихідного файлу: LAMAN.SOL

Максимальний час роботи на одному тесті: 5с

Шоколадна плитка являє собою сітку з горизонтальних та вертикальних ліній, точки якої в декартовій  системі координат на площині позначено точками з цілими координати. Потрібно поділити шоколадну плитку наступним чином:

-          починати з лівого нижнього кута, який знаходиться в початку координат;

-           можна пересуватися вздовж цих прямих;

-           при проходженні через точку  завжди змінювати напрям швидкості на перпендикулярний.

Знайти мінімальну довжину шляху  до верхньої правої точки.

Технічні умови. Програма Laman читає з файлу розміри шоколадної плитки (цілі числа, не більші 10^100000). Числа розділено пропуском. Програма виводить на екран  єдине число - шукану величину.

Приклади файлів

LAMAN.DAT

LAMAN.SOL

2 3

5


 

 

 

Задача 4. Сума дільників

Ім'я вхідного файлу:   sum.in

Ім'я вихідного файлу:   sum.out

Нехай х - натуральне число. Назвемо число y його дільником, якщо 1 ≤ у ≤ х і залишок від ділення x на y дорівнює нулю.

Задано число х. Знайдіть суму його дільників.

Формат вхідних даних: перший рядок вхідного файлу містить одне ціле число х (1 ≤ х ≤ 1018). Усі прості дільники числа х не перевищують 1000.

Формат вихідних даних: єдиний рядок вихідного файлу має містити одне число - суму дільників заданого числа х.

Приклад вхідних і вихідних даних:

sum.in

sum.out

12

28

239

240

 

 

Задача 5. Куфічний дирхем

Вхідний файл

dirkhem.in

Вихідний файл

dirkhem.out

Віталій Вікторович завжди був комунікабельною людиною і, відповідно, мав багато друзів. Одного вечора, переглядаючи свою електрону пошту, він був приємно здивований запрошенням на ювілей свого студентського друга Шаміля Ігоровича і одразу ж прийняв позитивне рішення.

Дізнавшись, що Шаміль Ігорович вже багато років захоплюється колекціонуванням старовинних монет і полює за середньовічною срібною монетою з назвою «Куфічний дирхем», Віталій Вікторович вирішив неодмінно подарувати йому цю монету.

Скориставшись Інтернетом, Віталій Вікторович визначив всі K міст, де можна придбати дану монету, а також її вартість у кожному із цих міст. Країна, у якій живуть Віталій Вікторович і Шаміль Ігорович, налічує N міст і M двосторонніх автомобільних доріг, кожна з яких з'єднує два різних міста держави. Відомо, що Віталій Вікторович живе в місті A, а Шаміль Ігорович - в місті B. Для кожної дороги Віталій Вікторович обчислив вартість проїзду з урахуванням технічних характеристик свого автомобіля. З метою економії Віталій Вікторович вирішив придбати монету по дорозі із міста A у місто B. Іншими словами, маршрут руху Віталія Вікторовича повинен проходити через місто, у якому він вирішить придбати монету. Однак виявилось, що їхати через місто, у якому монета коштує менш за все, не завжди вигідно, тому що вигравши у вартості монети, можна втратити набагато більше у вартості дороги і навпаки...

Ваше завдання - допомогти Віталію Вікторовичу вибрати оптимальний маршрут і місто Z, де слід придбати монету. Маршрут повинен починатися в місті A, закінчуватися в місті B і проходити через місто Z. Вартість даного маршруту повинна бути мінімальною. Під вартістю маршруту будемо розуміти суму кількості грошей, витрачених на дорогу і вартість монети в місті Z. Нижче наведено приклад для N = 5, M = 7, A = 1, B = 4.

 

 

mal02_10_2012

Рисунок 1.Візуалізація другого прикладу.

Для даного приклада K = 4, вартість монети позначено зверху над кругом, що позначає місто.

Оптимальний маршрут виділено червоним кольором. Для даного прикладу Z = 3.

Вхідні дані:

Перший рядок вхідного файлу містить три цілих числа N, M і K (2 ≤ N ≤ 5000; 1 ≤ M ≤ 100000; 1 ≤ K ≤ N), де N - кількість міст в країні, M - кількість доріг, а K - кількість міст, у яких продається шукана монета. Будемо вважати, що всі міста пронумеровані цілими числами від 1 до N.

Другий рядок вхідного файлу містить два цілих числа A і B (1 ≤ A, B ≤ N; A ≠ B), де A - номер міста, в якому живе Віталій Вікторович, а B - номер міста, в якому живе Шаміль Ігорович.

Третій рядок містить K пар цілих чисел Vi і Сi( 1 ≤ Vi ≤ N; 1 ≤ Сi ≤ 109), де Vi - це номер міста, у якому можна придбати потрібну монету, а Сi - вартість монети у відповідному місті. Відомо, що Vi ≠ Vj, якщо i ≠ j. Всі числа у рядку розділені одиночними пробілами.

Кожен наступний із M рядків містить три числа Xi, Yi, Si (1 ≤ Xi, Yi ≤ N; Xi ≠ Yi; 1 ≤ Si ≤ 105), де Xi і Yi - номери міст, з'єднаних двосторонньою дорогою, а Si - вартість проїзду по даній дорозі. Не існує двох різних доріг, що з'єднують одні і ті ж міста.

Вихідні дані

Єдиний рядок вихідного файлу має містити одне ціле число - мінімальну вартість маршруту. Гарантується, що рішення існує.

Приклад вхідних та вихідних даних:

dirkhem.in

dirkhem.out

Маршрут, город Z

3 3 2

3 1

1 20 2 5

1 2 7

1 3 5

2 3 8

20

{3, 2, 1}

Z = 2

 

5 7 4

1 4

1 100 4 50 3 10 2 55

1 2 10

5 3 42

1 3 30

2 4 50

3 4 70

2 5 24

4 5 21

103

{1, 3, 5, 4}

Z = 3

 

8 7 1

1 6

5 187

1 8 32

8 6 39

5 4 51

1 4 101

2 4 17

3 7 46

2 8 23

440

{1, 8, 2, 4, 5, 4, 2, 8, 6}

Z = 5

 

 

Последнее обновление 03.10.12 08:56
 

Статистика

Пользователей : 261
Статей : 225
Просмотрено статей : 115656

Вход/Регистрация

Нет