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

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

Школа олімпійського резерву з інформатики
Готуємось до олімпіади 2015-2 PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:08

Готуємось до олімпіади 2
З цифр числа утворити найбільше число
З цифр числа утворити найменше
Чотирицифрові числа які складаються з різних цифр, і добуток крайніх рівний.
В введеному масиві знайти найдовшу підпослідовність з однакових чисел, вивести його довжину.
В введеному масиві вивести довжину найдовшої підпослідовності з однакових цифр.
Перевірити чи матриця є «Судоку»
N відрізків на осі x задані координатами початку і кінця визначити довжину яку вони покривають.
Прямокутники зі сторонами паралельними осям координат задано координатами протилежних вершин визначити площу яку покривають прямокутники.
Коло з центром в початку координат задано радіусом визначити кількість точок з цілочисельними координатами, які лежать всередині.
Відрізок заданий координати початку і кінця визначити кількість точок з цілими координатами, які лежать на відрізку.
Трикутник заданий координатами вершин, перевірити чи точка належить трикутнику.
Ліві потворити
Визначити точку перетину відрізків.

 
Заняття (01.03.2017) PDF Печать E-mail
Добавил(а) Administrator   
21.03.17 10:16

http://nvk26.lutsk.ua/cgi-bin/new-client?contest_id=22 (zboru2017-1, zboru2017-2, zboru2017-3, zboru2017-4, zboru2017-5, пароль 1)

Еволюція

Під час досліджень, присвячених появі життя на планеті Олімпія, вченими було зроблено декілька сенсаційних відкриттів:

$11.     Усі живі організми планети походять від однієї бактерії BitozoriaProgramulis.

$12.     Еволюція проходила крок за кроком (за припущенням вчених – під час змін клімату на планеті).

$13.     На кожному кроці еволюції з кожного виду утворювалися рівно два підвиди, а попередній вид зникав.

$14.     Якщо вважати появу бактерії BitozoriaProgramulis першим кроком еволюції, то нині існуючі живі організми знаходяться на N-му кроці.

Щоб не вигадувати назви під час досліджень, вчені пронумерували всі види організмів, що будь-коли існували на планеті. Для цього вони намалювали дерево еволюції із коренем BitozoriaProgramulis, яка отримала номер 1. Далі нумерували види кожного кроку еволюції зліва направо. Таким чином безпосередні підвиди BitozoriaProgramulis отримали номери 2 та 3. Наступними були занумеровані види третього кроку еволюції – підвиди виду 2 отримали номери 4 та 5, а виду 3 – номери 6 та 7, і т.д.

Завдання

Напишіть програму EVO, яка за номерами двох видів обчислить номер виду їх найближчого спільного предка у дереві еволюції.

Вхідні дані

Перший рядок вхідного файлу EVO.DAT містить ціле число N (1N≤100) – кількість етапів еволюції, що відбулися на планеті Олімпія до теперішнього часу. Другий та третій рядки файлу містять по одному натуральному числу, що представляють номери видів, для яких потрібно знайти номер їх найближчого спільного предка.

Вихідні дані

Єдиний рядок вихідного файлу EVO.SOL має містити натуральне число – номер найближчого предка для двох видів.

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

EVO.DAT

EVO.SOL

4

15

12

3

18

233016

233008

14563


Працівники (100 балів)

На заводі кожна з N деталей може бути обробленою на одному з двох верстатів: Aабо B. Кожна деталь має порядковий номер від 1 до N.До обробки деталі поступають послідовно, у відповідності зі своїми номерами. Кількість деталей завжди парна.

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

$11)     Якщо на поточний момент на верстаті Bбула оброблена така ж кількість деталей, як і на верстаті A, то наступна деталь повинна бути оброблена на верстаті A.

$12)     У підсумку на кожному з верстатів повинно бути оброблено однакову кількість деталей.

Скільки існує людей, стільки і думок. Кожен із працівників цього заводу запропонував свою послідовність обробки деталей, причому всі пропозиції виявилися різними, але такими, що задовольняють правилам 1 і 2.

Завдання

Напишіть програму STAFF, що за інформацією про кількість деталей N визначає максимальну можливу кількість працівників заводу.

Вхідні дані

Єдиний рядок вхідного файлу STAFF.DAT містить парне число N (2N≤28) – кількість деталей яку необхідно обробити.

Вихідні дані

Єдиний рядок вихідного файлу STAFF.SOL має містити ціле число – максимальну можливу кількість працівників заводу.

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

STAFF.DAT

STAFF.SOL

4

2

Перший працівник вважає що на верстаті Aнеобхідно обробити деталі 1 та 2, а на верстаті B, відповідно, 3 та 4. Другий  має думку, що на верстаті A потрібно обробити деталі 1 та 3, а на станке B – детали 2 та 4. Інших варіантів послідовності обробки немає.

Розв’язок задачі «Працівники»

Автор: Шаміль Ягіяєв

Розв’язок 1 (Пошук з поверненням)

Найпростіший розв’язок задачі — це перебір усіх можливих варіантів обробки деталей на верстатах. У такому випадку кожного разу, коли буде оброблятися певна деталь, буде розглянуто обидва варіанти верстатів (при цьому буде перевірено, чи задовольняє це наведеним правилом). При такому підході алгоритм буде мати складність порядку O(2N).

Розв’язок 2 (Динамічне програмування)

Твердження. Задача еквівалентна задачі обчислення кількості вірних варіантів розташування n=N/2 пар круглих дужок у арифметичному виразі.

Дійсно, обробка i-ої деталі на верстаті A може означати що i-та дужка у виразу буде відкриваючою „(”, а обробка на верстаті B, що закриваючою „)”. Неважко переконатися у тому що таке формулювання є адекватним початковому, проаналізувавши правила обробки деталей.

Будемо продовжувати розв’язувати задачу, використовуючи таке більш зручне формулювання.

Відомо, що коли кількість пар дужок n=1 кількість різних розташувань дужок дорівнює 1. Нехай K(s)— це розв’язок задачі для будь-якого s<n (K(0)=1). Тоді число K(n) можна отримати наступним чином.

Таким чином, кожне значення від 1 до nнеобхідно обрахувати 1 раз (проміжні результати потрібно зберігати), на що необхідно лінійну кількість операцій. Тобто, загальна складність такого алгоритму, повертаючись до початкового формулювання складатиме O(N).

(2*n)!/(n!*(n+1)!)

(N+2)*(n+3)*

2*3*4*5

S=s+(n+2)/2+ (n+3)/3+….

Розв’язок 3 (Комбінаторні обчислення)

Задача про відшукання кількості розташування дужок у арифметичному виразі є досить поширеною. Послідовність чисел, які утворюються при розв’язанні цієї задачі при n=1,2,… називають послідовністю Каталана. Загальний член цієї послідовності можна обчислити за формулою:

Розв’язок 4 (Масив констант)

Можна помітити, що кількість різних вхідних даних дорівнює 13, тобто усі ці випадки можна перелічити у програмі, заздалегідь обрахував відповіді на них. Звісно, за час туру неможливо вручну перелічити усі випадки, і доведеться робити це з допомогою комп’ютера.


Дільники

За заданим натуральним числом N необхідно обчислити кількість натуральних чисел, які є дільниками N! (факторіалу числа N).

Наприклад, при N=4, N!=4·3·2·1=24. Це число має такі дільники: 1, 2, 3, 4, 6, 8, 12, 24. Таким чином шукана кількість дорівнює 8.

Завдання

Напишіть програму DIVISOR, що за натуральним N, знаходить кількість дільників його факторіалу.

Вхідні дані

Єдиний рядок вхідного файлу DIVISOR.DAT містить одне ціле число N (1N45).

Вихідні дані

Єдиний рядок вихідного файлу DIVISOR.SOL має містити одне ціле число – знайдену кількість дільників числа N!

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

DIVISOR.DAT

DIVISOR.SOL

4

8

 
Матеріали школи 2018-2019 PDF Печать E-mail
Добавил(а) Administrator   
31.10.18 22:49

Посилання на папку з матеріалами

 

 
Заняття (28.02.2018) PDF Печать E-mail
Добавил(а) Administrator   
23.03.18 10:50

Вступ

Приклад 1

Дано послідовність з N чисел, котра містить різні числа від 0 до N. Визначити, якого числа не існує в даній послідовності.

1 спосіб.

Посортувати і відшукати різницю, рівну два між сусідніми елементами.

2 спосіб.

Перевірити, чи існує кожне з чисел від 0 до N у послідовності, використовуючи два вкладених цикли.

3 спосіб.

Скористатися формулою суми арифметичної прогресії.

Приклад:

N=5;

Послідовність А[1..N] 4 2 3 0 5

Сума елементів послідовності рівна S1=4+2+3+0+5=14

Сума арифметичної прогресії (0..N) 0 1 2 3 4 5 згідно з формулою

Результат R=S2-S1=15-14=1

Отже, не існує числа 1.

 

Математика (формули)

http://www.e-olymp.com/en/problems/7239

https://www.e-olymp.com/uk/problems/1378

https://www.e-olymp.com/uk/contests/9746/problems/85777

Числові ряди (техніка написання)

https://www.e-olymp.com/uk/problems/192

https://www.e-olymp.com/uk/problems/971

https://www.e-olymp.com/uk/problems/4529

https://www.e-olymp.com/uk/problems/230


Системи числення

Цікаве число

Input file name:

numbers.in

Output file name:

numbers.out

Time limit:

100 ms

Memory limit:

256 M

Степан на факультативі з програмування почав вивчати системи числення. На першому уроці вчитель розповів про систему числення з основою два, дуже популярною в комп'ютерному світі. На другому уроці Степан дізнався про систему числення з основою три. І так далі на кожному наступному уроці він дізнавався про нові системи числення, так що на i-му уроці була розглянута система числення з основою i+1.

Щоб краще запам'ятати, Степан на кожному уроці бере одне і те ж число X і записує його в зошит в останній вивченій системі числення. Приклад переведення числа 81 в систему числення з основою 6:

Одного разу Степан помітив, що у записаного ним числа X в новій системі числення всі цифри однакові. До того ж, він розуміє, що таке відбувається вперше, і ні на якому з попередніх уроків число не виходило таким цікавим.

Повернувшись вражений додому, Степан забув про те, яку систему числення в цей день він розглядав на уроці. Допоможіть йому знайти систему числення з мінімальною основою, в якій це число має однакові цифри.

Формат вхідних даних. Єдиний рядок вхідного файлу містить одне ціле число X (1 ≤ X ≤ 1012) – число записане в десятковій системі числення.

Формат вихідних даних. Вихідний файл повинен містити одне ціле число B (2 ≤ B) – шукана система числення.

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

numbers.in

numbers.out

3

2

219

8

1009

1008

Пояснення до прикладів:

$11.       «3» – це «11» в системі числення з основою 2.

$12.       «219» – це «333» в системі числення з основою 8.

$13.       «1009» – це «11» в системі числення з основою 1008.

$1· 

https://www.e-olymp.com/uk/problems/1377

https://www.e-olymp.com/uk/problems/1001

https://www.e-olymp.com/uk/problems/3605


Геометрія

Задача VIОLАТION (20 балів)

В деякому місті шоферам заборонено при русі робити ліві повороти. За кожен такий поворот шофер повинен сплачувати штраф в розмірі М гривень. Для спостереження за рухом транспорту в місті встановлена комп'ютерна система, яка фіксує координати автомобіля на початку руху, в кінці та при кожному повороті.

Необхідно по заданій послідовності координат руху обчислити суму штрафу.

Вхідні дані: В першому рядку вхідного файлу VIOLATION.DAT записано N - кількість зафіксованих координат руху деякого автомобіля та М - величина штрафу, в наступних рядках координати автомобіля в процесі руху - (хi, уi), і=1,2,...,М, де (х1, у1) - точка початку руху, (хNN) - остання точка маршруту автомобіля.

Всі числа цілі та знаходяться в межах від -1000 до 1000.

Вихідні дані:Єдиний рядок вихідного файлу VIOLATION.SOLмає містити суму штрафу.

Приклад:

 

VIOLATION.DAT

VIOLATION.SOL

550

 

50

00

   

20

   

1 1

   

51

   

5-1

   
 

Задача FOREST

Сергійко заблукав в лісі і вийти з нього він може тільки потрапивши на шосе, яке має вигляд нескінченної прямої, що задається рівнянням ax + by =1. В початковий момент часу Сергійко знаходиться в точці (хоо) і щоб остаточно не заблукати він вирішив йти по компасу в одному з чотирьох напрямків: "Північ", "Південь", "Захід" або "Схід". В довільний момент часу він може змінити напрямок руху на інший з вказаних чотирьох.

Осі координатної системи в умові задачі направлені по сторонам світу.

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

Вхідні дані: Єдиний рядок вхідного файлу FOREST.DAT містить числа a, b, хо та уо. Всі числа цілі та знаходяться в межах від -1000 до 1000, a і b одночасно не дорівнюють 0.

Вихідні дані: Єдиний рядок вихідного файлу FOREST.SOL має містити довжину найкоротшого шляху з точністю до двох знаків після коми.

Приклад:

FOREST.DAT

FOREST.SOL

1 2 -2 3

1.50

 

https://www.e-olymp.com/uk/problems/4777

https://www.e-olymp.com/uk/problems/4778

https://www.e-olymp.com/uk/problems/1038 (Формула Піка)

https://www.e-olymp.com/uk/problems/8290

https://www.e-olymp.com/uk/problems/8284

https://www.e-olymp.com/uk/problems/8257

https://www.e-olymp.com/uk/problems/42

https://www.e-olymp.com/uk/problems/4

https://www.e-olymp.com/uk/problems/839

Площа многокутника з цілочисловими вершинами рівна сумі

A=i+b/2-1

де i — кількість цілочислових точок усередині многокутника, b — кількість цілочислових точок на межі многокутника.

bшукаємо як НСД(x1-x2,y1-y2)

Площу за формулою

Додаткові задачі

http://www.e-olymp.com/en/problems/7236

http://www.e-olymp.com/en/problems/7412

https://www.e-olymp.com/uk/problems/7337

 
Заняття 17.09.2019 PDF Печать E-mail
Добавил(а) Administrator   
30.09.19 13:48

1 Завдання 11.09.2019 Розгалуження

 Повторення

Ціле /, %

Дійсне

Розгалуження

https://www.e-olymp.com/uk/problems/8860

https://www.e-olymp.com/uk/problems/8872

https://www.e-olymp.com/uk/problems/8877

Задачіна самостійне опрацювання 8861-8908

 

 

2 Завдання 18.09.2019  Двовимірні масиви

 

Двовимірня масиви

 

https://www.e-olymp.com/uk/problems/2099

 

https://www.e-olymp.com/uk/problems/841

 

https://www.e-olymp.com/uk/problems/85

 

https://www.e-olymp.com/uk/problems/2668

 

https://www.e-olymp.com/uk/problems/1055

 

3. Заняття 18.09.2019 Граф Пошук в глибину

 

Графи

Пошук в глибину

https://www.e-olymp.com/uk/problems/122

Маршрути в горах

Гірський туристичний комплекс складається з n турбаз, з’єднаних між собою k гірськими переходами (інші маршрути в горах небезпечні). Кожен перехід між двома базами займає 1 день. Туристична група знаходиться на базі a і збирається потрапити на базу b не більш ніж за d днів. Скільки існує різних таких маршрутів (без циклів) між a і b?

Вхідні дані

В першому рядку через проміжок записані числа n, k, a, b, d (n ≤ 50, d ≤ 10). Кожен з наступних k рядків містить пару чисел, яка описує можливий гірський перехід. Усі числові значення натуральні.

Вихідні дані

Вивести одне число – кількість маршрутів.

Ліміт часу 1 секунда

Ліміт використання пам'яті 64 MiB

Вхідні дані #1

5 8 2 5 3

1 2

1 3

1 5

2 1

2 4

3 4

3 5

4 1

0

1

1

0

1

1

0

0

1

0

0

0

0

1

1

1

0

0

0

0

0

0

0

0

0

void p(int I, int v)

{c[i]=v;

if( (v==b && i<=d+1) || i>d+1)

{for(int j=1;j<=I;j++)cout<<c[j]<<” “;

cout<<endl;

//аналіз результати

}

else

for(int j=1 ;j<=n;j++)

if(a[v][j]==1                   // аналіз входу ) p(i+1,j)

}

main()

{

матриця

p(1,a);

}

Додатково

https://www.e-olymp.com/uk/problems/4000

https://www.e-olymp.com/uk/problems/1977

 

Последнее обновление 30.09.19 13:53
 


Страница 15 из 43

Статистика

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

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

Нет