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

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

Школа олімпійського резерву з інформатики
Заняття 04.09.2019 PDF Печать E-mail
Добавил(а) Administrator   
30.09.19 13:40

Завдання IІ етапу Всеукраїнської учнівської олімпіади

з інформатики у 2018/2019 н.р.

http://nvk26.lutsk.ua/cgi-bin/new-client?contest_id=76

 

Логін school2019-2020-1 .... school2019-2020-50 Пароль -1 

 

Задача A. Простий калькулятор (100 балів)

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

Обмеження часу: 1 с

Обмеження пам'яті: 128 M

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

Num1 + Num2

Num1 - Num2

Num1 * Num2

Num1 / Num2

Де num1 і num2 цілі числа (не більші за 100000).

Знайдіть значення заданого виразу. Символи + - * / позначають відповідно операції додавання, віднімання, множення та ділення відповідно. Всі операції цілочисельні, тобто 5/3=1.

Вхідні дані. Рядок містить вираз який має обчислити простий калькулятор.

Вихідні дані. Виведіть результат виразу, який потрібно обчислити.

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

input.txt

output.txt

3 * 12

36

16 + 45

61

Задача B. Задача Фокус-покус (100 балів)

Обмеження часу: 1 с

Обмеження пам'яті: 256 M

Петрик П’яточкін загадав число від 1 до 109, а Вам повідомив три остачі, які утворилися при діленні загаданого числа на числа 971, 997, 1033. Зробіть фокус – швидко відгадайте число. Напишіть програму, що за даними остачами, знаходить загадане число.

Вхідні дані. Єдиний рядок містить три натуральних числа.

Вихідні дані. Єдиний рядок має містити одне натуральне число.

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

input.txt

output.txt

5 10 15

835049324

Задача С. Розфарбування таблиці множення (100 балів)

Ім’я вхідного файлу: іnput.txt

Ім’я вхідного файлу: output.txt

Обмеження часу: 1 с

Обмеження пам'яті: 16 M

Таблицею множення назвемо таблицю розміру n рядків на m стовпців, в якій на перетині i-го рядка і j-ого стовпця розміщене число i * j (рядки і стовпці нумеруються з одиниці).

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

Процес фарбування чисел можна умовно розбити на чотири етапи. На першому етапі всі числа фарбуються в чорний колір. На другому - всі парні числа фарбуються в червоний колір, на третьому - всі числа, що діляться на 3, фарбуються в зелений колір, на четвертому - всі числа, що діляться на 5, фарбуються в синій колір.

Директор школи хоче знати, яку кількість картриджів для принтерів необхідно закупити для друку таблиць. Тому йому необхідна інформація про те, скільки чисел якого кольору буде в розфарбованій таким чином таблиці множення n на m. Напишіть програму, яка допоможе у підрахунку таких кількостей.

Вхідні дані. Рядок містить два натуральних числа n і m (1 ≤ n, m ≤ 1000).

Вихідні дані. У першому рядку виведіть кількість чисел, пофарбованих у червоний колір, в другій - у зелений, в третій - у синій, в четвертій - у чорний. Дотримуйтесь формату, наведеному в прикладах.

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

input.txt

output.txt

10 10

RED : 21

GREEN : 39

BLUE : 36

BLACK : 4

5 2

RED : 5

GREEN : 2

BLUE : 2

BLACK : 1

Задача D. Ліфт (100 балів)

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

Ім’я вхідного файлу: іnput.txt

Ім’я вхідного файлу: output.txt

Обмеження часу: 1 с

Обмеження пам'яті: 64 M

Щоб підняти на N-й поверх M-поверхового будинку новий холодильник, Степан визвав бригаду вантажників. Оплата роботи вантажників відбувається таким чином: за підйом холодильника на один поверх необхідно заплатити 200 гривень, за спуск на один поверх – 100 гривень. За підйом та спуск ліфтом оплата не береться. Незважаючи на те, що в Степановому будинку є ліфт, йому, напевно, все ж таки доведеться заплатити вантажникам, тому що ліфт зупиняється тільки на кожному K-му поверсі, починаючи з першого (тобто на поверхах з номерами 1, K+1, 2K+1, 3K+1, …). Необхідно знайти, якої мінімальної суми грошей буде достатньо, щоб вантаж

 

ники доставили холодильник з першого поверху на N-й.

Вхідні дані. У рядку записані три числа: M (2≤M≤100), N (2≤NM) и K (2≤KM-1), розділені пропусками.

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

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

input.txt

output.txt

20 7 4

200

20 7 2

0

Всі завдання необхідно виконати за 3 години

http://nvk26.lutsk.ua/cgi-bin/new-client?contest_id=76

 

Последнее обновление 30.09.19 13:44
 
Підсумок PDF Печать E-mail
Добавил(а) Administrator   
23.05.19 14:32

Вітаю з завершенням навчального року!

Вітаю з перемогами в олімпіадах: міських(районних), обласних, всеукраїнських, міжнародних (студентських) !

Чим зайнятися після навчання: вчити програмування  

 https://prometheus.org.ua/   НАЙКРАЩІ ОНЛАЙН-КУРСИ УКРАЇНИ ТА СВІТУ  
 
https://itvdn.com  ITVDN - самые популярные видео курсы онлайн программирования. У нас вы найдёте курсы по С#/.NET Developer, Frontend Developer, ASP.NET MVC 
 
Основи програмування CS50 (Гарвардський курс)
 
 
https://cyberua.info/tag/informatyka/ 
 
Навчальні YouTube канали з програмування  
http://it-science.com.ua/article.php?id=9&table=dev
 
   
Особливу увагу звертаю на вичення PYTHON 
Область вкладених 

Дивіться матерали 2018/2019 н.р.

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

 
Заняття 31.10.2018 PDF Печать E-mail
Добавил(а) Administrator   
31.10.18 22:55
1. Зареєнтернет олімпіаді http://176.102.48.88/vippoolimp
2. Розв'язати задачі турніру  http://nvk26.lutsk.ua/cgi-bin/new-client?contest_id=60 
3. Розв'язувати задачі Всеукраїнської Інтернет олімпіади  https://netoi.org.ua/index_ua.php?lng=ua&cid=1918
 
Матеріали школи 2018-2019 PDF Печать E-mail
Добавил(а) Administrator   
31.10.18 22:49

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

 

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

Зміст

pair<type1, type2>.. 2

vector<type1>.. 3

stack<type1>.. 4

deque<type1>.. 5

map<type1, type2>.. 6

set<type1>.. 7

Задачі з e-olymp. 8


pair<type1, type2>

pair<int, int> p;

p.first - перший елемент

p.second - другйи елемент

Інші, можливі, приклади пар:

pair<double, double>

pair<pair<int, int>, int>

pair< pair<int, int>, pair<int, int> >

pair<long long, vector<int> >

vector<type1>

vector<int> m;

m.push_back(a); - добавити в кінець елемент a

m[i] – звернутия до i-ого елемента

m.size() - розмір вектора

m.back() - останній елемент вектора

m.clear(); - очистити вектор

m.empty() - true якщо вектор пустий, інакше false

m.begin() і m.end() - почак і кінець вектора. Необхідні для сортування

m.erase(m.begin()+i); - видалити i-ий елемент

m.erase(m.begin()+i, m.begin()+j); - видалити елементи від i-ого до j-ого

Видалення працює за лінійний час, тобто доволі довго.


stack<type1>

stack<int> s;

s.push(a); - добавити елемент a

s.size() - розмір стека

s.top() - останній елемент стека

s.pop() - видалити останній елемент стека

s.empty() - true якщо стек пустий, інакше false


deque<type1>

deque<int>d;

d.push_front(a); - добавити елементa на початок дека

d.push_back(a); - добавити елементa в кінці дека

d.front() - перший елемент дека

d.back() - останній елемент дека

d.pop_front(); - видалити перший елемент

d.pop_back(); - видалити останній елемент

d.size() - розмір дека

d.empty() - true якщо дек пустий, інакше false

d.clear(); - очистити дек

d[i] - i-ий елемент в деці


map<type1, type2>

map<int, int> m;

map<int, int>::iterator it; - ітератор(вказівник) на певний елемент мапи

m[i] = a; - присвоєння елементу мапи з індексомi значення a

m.count(i) - перевірка чи використовувався елемент з індексом і

m.clear(); - очистити мапу

m.begin() - початок мапи і заодно вказівник на перший елемент

m.end() - вказівник на кінець мапи. Розташований на 1 позицію дальше від останнього елмента мапи

m.empty() -true якщо мапа пуста, інакше false

m.size() – розмір мапи(кількість елементів, які використовувалися в мапі)

it->first - індекс елемента мапи на який вказуєit

it->second - значення елемента мапи на який вказує it


set<type1>

set<int>s;

set<int>::iteratorit; - ітератор(вказівник) на певний елемент сета

multiset<int>s2; - сет в якому можуть повторюватися значення

s.insert(a); - вставити елементa в сет

s.begin() - вказівник на початок сета і одночасто і на перший елемент

s.end() - вказівник на кінець сета. Розташований на 1 позицію дальше від останнього елмента сета

s.erase(a) - видалити елемент(всі елементи) aв сеті(мультисеті)

s.erase(it) - видалити елемент, на який вказує вказівник it

s.find(a) - вказівник на елемент aв множині, або s.end() якщо такого елемента в сеті немає

s.upper_bound(a) - вказівник на перший елемент, який строго більшийa

s.lower_bound(a) - вказівник на перший елемент, який більший або рівний a

s.size() - розмір сета

s.clear(); - очистити сет

s.empty() - true якщо сет пустий, інакше false

*it- значення самого елемента в сеті

it++; - перенести вказівник на наступний елемент в сеті

it--; - перенести вказівник на попередній елемент в сеті

Приклад проходу по всьому сетові(знаходення суми всіх елементів) :

for(it=s.begin();it!=s.end();it++)

{

        sum+= *it;

}


Задачі з e-olymp

291 – set + deque

555 – set

693 – stack

694 – deque

790 – set

1211 – map

1225 – set

1226 – set

1227 – set

1228 – set

1776 – stack

1868 – map

1871 – stack

1872 – vector

2040 – map(можна простими масивами, але для розуміння краще зробити використовуючи map)

2479 – stack

2661 – set

3004 – set

Примітка: setпідрозуміває використання setабо multiset, в залежності від задачі

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

http://nvk26.lutsk.ua/cgi-bin/new-client?contest_id=59

school2018-1school2018-30

пароль 1

Задача

http://codeforces.com/problemset/problem/550/A

Два підрядка

Дано рядок s. Потрібно визначити, чи існують в цьому рядку s два  підрядка, якы не пертинаються "AB" і "BA" (ланцюжків можуть йти в будь-якому порядку).

Вхідні дані

На вхід подається рядок s довжиною від 1 до 105 символів, що складається з великих літер латинського алфавіту.

Вихідні дані

Виведіть "YES" (без лапок), якщо рядок s містить дві непересічні підрядка "AB" і "BA", і "NO" інакше

Три варіанти розбирав 

ABA або ВАВ і АВ або ВА

АВіВА

ВАіАВ

#include "iostream"

#include  "string.h"

using namespace std;

int main()

char *s=new char [500000];

cin>>s;

int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;

int i=1;

while (i<strlen(s))

{

if (((s[i-1]=='B' && s[i]=='A' && s[i+1]=='B') || (s[i-1]=='A' && s[i]=='B' && s[i+1]=='A') ) && e==0) {e=1;i=i+3;}

if (((s[i-1]=='A' && s[i]=='B') || (s[i-1]=='B' && s[i]=='A'))  && e==1  )f=1;

if (s[i-1]=='A' && s[i]=='B' && a==0) {a=1;}

if (s[i-1]=='B' && s[i]=='A' && a==1)b=1;

if (s[i-1]=='B' && s[i]=='A' && c==0) {c=1;}

if (s[i-1]=='A' && s[i]=='B' && c==1  )d=1;

i++;

if (a==1 && b==1) {cout<<"YES"<<endl;return 0;} else

if (c==1 && d==1) {cout<<"YES"<<endl;return 0;} else

if (f==1 && e==1) {cout<<"YES"<<endl;return 0;}

}

cout<<"NO"<<endl;

///

return 0;

}

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

Завдання 1

http://codeforces.com/problemset/problem/550/A

Два підрядка

Дано рядок s. Потрібно визначити, чи існують в цьому рядку s два підрядка, якы не пертинаються "AB" і "BA" (ланцюжків можуть йти в будь-якому порядку).

Вхідні дані

На вхід подається рядок s довжиною від 1 до 105 символів, що складається з великих літер латинського алфавіту.

Вихідні дані

Виведіть "YES" (без лапок), якщо рядок s містить дві непересічні підрядка "AB" і "BA", і "NO" інакше

Завдання 2

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

Поворот

Задано масивn×m. Потрібно повернути його за годинниковою стрілкою на90градусів.

Вхідні дані

У першому рядку задано натуральні числаnтаm(1n,m50). У наступнихnрядках записано поmневід'ємних чисел, які не перевищують109- сам масив.

Вихідні дані

Виведіть перевернутий масив у форматі вхідних даних.

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

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

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

3 4

1 2 3 4

5 6 7 8

9 10 11 12

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

4 3

9 5 1

10 6 2

11 7 3

12 8 4

Завдання 3 (http://kpi-open.org/tasks/ )

Недобросовісний МЕНЕДЖЕР

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

Формат вхідного файлу

Вхідний файл складається з одного рядка, що містить три цілих числа, відокремлених один від одного пробілом: N - кількість міст (10 <= N <= 25000), D - відстань між містами, F - витрата палива на одиницю шляху.

Формат вихідного файлу

Вихідний файл складається з одного рядка, що містить ціле число, рівне витраті палива.

Введення

Виведення

12 1 5

 

125 5 10

 

325 5 1

 

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

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

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

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

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

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

 

 
Заняття (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

 


Страница 3 из 27

Статистика

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

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

Нет