четверг, 30 марта 2017 г.

Задачі

Заповнення масиву випадковими не повторюваними числами.
створити матрицю 3 на 3, через Random. далі користувач повинен ввести номер стовпчика. і програма повинна вивести на екран стовпець, якщо в ньому все числа парні. якщо ні то відповідне повідомлення.

понедельник, 27 марта 2017 г.

Олімпіадні задачі

Оргкомітет Московської міської олімпіади вирішив організувати оглядову екскурсію по Москві для учасників олімпіади. Для цього був замовлений двоповерховий автобус (учасників олімпіади досить багато і в звичайний вони не вміщаються) висотою 437 сантиметрів. На екскурсійному маршруті зустрічаються N мостів. Журі та оргкомітет олімпіади дуже стурбовані тим, що високий двоповерховий автобус може не проїхати під одним з них. Їм вдалося з'ясувати точну висоту кожного з мостів. Автобус може проїхати під мостом тоді і тільки тоді, коли висота мосту перевершує висоту автобуса.
Допоможіть організаторам дізнатися, чи закінчиться екскурсія благополучно, а якщо немає, то встановити, де відбудеться аварія.
Вхідні дані
У вхідному файлі INPUT.TXT спочатку міститься число N (1 <= N <= 1000). Далі йдуть N натуральних чисел, що не перевершують 10000 - висоти мостів в сантиметрах в тому порядку, в якому вони зустрічаються на шляху автобуса.
Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT потрібно вивести фразу "No crash", якщо екскурсія закінчиться благополучно. Якщо ж станеться аварія, то потрібно вивести повідомлення "Crash k", де k - номер моста, де відбудеться аварія. Фрази виводити без лапок рівно з одним пропуском всередині.



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



суббота, 25 марта 2017 г.

Олімпіадні задачі


Незабуваємо читати Вікіпедію

Існує легенда, що Йосип Флавій - відомий історик першого століття - вижив і став відомим завдяки математичній обдарованості. В ході іудейської війни він у складі загону з 41 іудейського воїна був загнаний римлянами в печеру. Вважаючи за краще самогубство полоні, воїни вирішили вишикуватися в коло і послідовно вбивати кожного третього з живих до тих пір, поки не залишиться жодної людини. Однак Йосип поряд з одним зі своїх однодумців визнав подібний кінець безглуздим - він швидко вирахував рятівні місця в порочному колі, на які поставив себе і свого товариша. І лише тому ми знаємо його історію ...
У нашому варіанті ми почнемо з того, що збудуємо в коло N чоловік, пронумерованих числами від 1 до N, і будемо виключати кожного k-ого до тих пір, поки не вціліє тільки одна людина.
Наприклад, якщо N = 10, K = 3, то спочатку помре 3-й, потім 6-й, потім 9-й, потім 2-й, потім 7-й, потім 1-й, потім 8-й, за ним - 5-й, і потім 10-й. Таким чином, вціліє 4-й.
Потрібно написати програму, яка за заданими N і K буде визначати номер вцілілої людини.
Вхідні дані
Вхідний файл INPUT.TXT містить два натуральних числа N і M. Обмеження: N <= 500, M <= 100.
Вихідні дані

У вихідний файл OUTPUT.TXT потрібно вивести номер вцілілої людини.

Постійна Капрекара
Візьмемо чотиризначний число, в якому не всі цифри однакові, наприклад 6264. Розташуємо цифри спочатку в порядку убування - 6642; потім, переставивши їх в зворотному порядку, отримаємо 2466. Віднімемо останнє число з 6642. На наступному кроці з отриманої різницею виконаємо те ж саме. Через кілька таких дій вийде число, що переходить саме в себе і зване постійної Капрекара.
Потрібно написати програму, яка знаходить цю постійну і кількість кроків для її отримання із заданого чотиризначного числа.
Вхідні дані
Вхідний файл INPUT.TXT містить один рядок, в якій записано чотиризначний число.
Вихідні дані
У вихідний файл OUTPUT.TXT записуються: в першому рядку постійна Капрекара, в другій - кількість кроків для її отримання.

четверг, 23 марта 2017 г.

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


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

      Масив – це змінна, утворена послідовністю змінних, причому: 
         усі вони (компоненти, або елементи масиву) мають той самий тип; 
         кожний компонент має свій номер у послідовності (індекс) і відрізняється ним від інших елементів (ідентифікується); 
         множина індексів (індексова множина) скінченна й зафіксована в означенні масиву та в процесі виконання програми не змінюється; 
         можливість обробки компонента, або його доступність, не залежить від його місця в послідовності (елементи рівнодоступні). 

      Двовимірні масиви. Елементи двовимірного масиву (дані можуть бути подані у вигляді таблиці) визначаються іменем масиву та двома індексами: перший індекс означає номер рядка, другий - номер стовпця, на перетині яких стоїть елемент, наприклад р[1,2], p[i,j]. 


Створити двохвимірний масив. Заповнити його випадковими числами

















static void Main(string[] args)
  {
  
   int[,]multMatr;
   multMatr = new int[10,10];
   
    for (int i = 1; i <= 9; i++)
   for (int j = 1; j < 9; j++)
   multMatr[i, j] = i * j;
  
   for (int i = 1; i <= 9; i++)
   {
    for (int j = 1; j <= 9; j++)
    {
     Console.Write(multMatr [i, j] + "\t");
    }
    Console.WriteLine();
   }

среда, 22 марта 2017 г.

c#

Порахувати, скільки слів у реченні починаються на букву а?

Cтворити програму, яка визначить кількість слів у реченні.
Ввести з клавіатури номер трамвайного квитка (6-значне число) і перевірити чи є даний квиток щасливим.

Потрібно вивести уявлення цілого числа N у вигляді добутку простих чисел.
Вхідні дані
Вхідний файл INPUT.TXT містить натуральне число N (2 ≤ N ≤ 231-1).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть список простих множників числа N в порядку неспадання, розділених знаком «*».
Для вирішення даного завдання можна знайти все прості числа, що не перевищують sqrt (n), а далі ділити на кожне з них число n поки воно ділиться, змінюючи значення n. Але насправді зовсім не обов'язково здійснювати пошук простих дільників, досить це проробляти з усіма числами від 2 до sqrt (n) в порядку зростання. При цьому, кожен раз при зміні значення n слід бігти до нового значення sqrt (n) для того, щоб в результаті в n виявилося єдине просте число.

30
2*3*5

Я загадаю ціле число з інтервалу [A, B]. Напишіть програму, яка за мінімальне число питань відгадає це число. Грати будемо так. Я повідомляю програмі числа A і B, програма виводить свою версію відповіді. Якщо це менше задуманого мною, я повідомлю програмі про це числом -1, якщо більше - числом 1, а якщо вгадано - числом 0. Так буде тривати, поки програма не вгадає число (природно, я буду грати чесно!). Постарайтеся, щоб ваша програма вгадала число за мінімальне число ходів.
Введення-виведення: У першому рядку вводите з клавіатури два цілих числа через пропуск - межі діапазону. Програма на екран виводить свою версію в новому рядку. З нового рядка ви вводите "-1", "1" або "0" (без лапок). Так триває до того моменту, поки число не буде вгадано (тобто ваша відповідь "0" повинен завершити роботу програми).
У нас є два початкових числа, причому X> A і X <B. Виберемо X1 = ((A + B) / 2) і буде виконаний один з трьох варіантів:
1) Число співпало, вивалюємося, ура!
2) Число менше, ніж X1. Тоді присвоюємо B значення X.
3) Число більше, ніж X1. Тоді присвоюємо A значення X.
Повторюємо вищенаведені рядки, до тих пір, поки не отримаємо загадане число.
У цьому рішенні кількість дій порядку log2 (B-A), тобто кожен раз ми зменшуємо область пошуку вдвічі.
Петрик П’яточкин загадав число від 1 до 10 , а Вам повідомив три остачі, які утворилися при діленні загаданого числа на числа 971, 997, 1033. Зробіть фокус – швидко відгадайте число. Напишіть програму, що за даними остачами, знаходить загадане число. Вхідні дані: єдиний рядок вхідного потоку містить три натуральних числа. Вихідні дані: єдиний рядок вихідного потоку має містити одне натуральне число.

Приклади Вхідні дані Результат роботи 5 10 15             835049324


вторник, 21 марта 2017 г.

c#

Більше-менше
(Час: 1 сек. Пам'ять: 16 Мб Складність: 3%)
Одна з основних операцій з числами - їх порівняння. Ми підозрюємо, що ви досконало володієте цією операцією і можете порівнювати будь-які числа, в тому числі і цілі. У цьому завданню необхідно порівняти два цілих числа.
Вхідні дані
У двох рядках вхідного файлу INPUT.TXT записані числа A і B, які не перевищують по абсолютній величині 2 * 109.
Вихідні дані

Запишіть у вихідний файл OUTPUT.TXT один символ "<", якщо A <B, ">", якщо A> B і "=", якщо A = B.

понедельник, 20 марта 2017 г.

C#



Бандити Гаррі і Ларрі відпочивали на природі. Вирішивши постріляти, вони виставили на колоду кілька банок з-під кока-коли (не більше ніж 10). Гаррі почав прострілювати банки по порядку, починаючи з самої лівої, Ларрі - з самої правої. У якийсь момент вийшло так, що вони одночасно прострелили одну і ту ж останню банку.
Гаррі обурився і сказав, що Ларрі повинен йому купу грошей за те, що той позбавив його задоволення прострелити кілька банок. У відповідь Ларрі сказав, що Гаррі повинен йому ще більше грошей з тих же причин. Вони стали сперечатися хто кому скільки винен, але ніхто з них не пам'ятав скільки банок було на початку, а шукати прострелені банки по всій окрузі було неохота. Кожен з них пам'ятали тільки, скільки банок прострелив він сам.
Визначте за цими даними, скільки банок не прострелив Гаррі і скільки банок не прострелив Ларрі.
Вхідні дані
У єдиному рядку вхідного файлу INPUT.TXT записано 2 числа - кількість банок, прострелених Гаррі і Ларрі відповідно.
Вихідні дані

У файл OUTPUT.TXT виведіть 2 числа - кількість банок, що не прострелених Гаррі і Ларрі відповідно.
Прочитавши цю задачу виникає бажання дізнатися: скільки всього було банок? Насправді, це обчислюється досить просто: c = a + b-1, де одиницю ми відняли, тому що одна з банок прострелено двічі, тому кількість банок дорівнює числу пострілів (всі банки адже простріляні) без одиниці. Тому Гаррі прострілив c-a банок, а Ларрі c-b банок.
Виявляється, що можна обійтися і двома змінними без обчислення загальної кількості банок. Дійсно, кожен бандит не прострелив саме ті банки, які прострілив інший, окрім єдиної, в яку вони вистрілили разом. Таким чином, Гаррі прострілив b-1 банок, а Ларрі a-1 банок.


Удачі в читанні a і b, а так само виведенні b-1 і a-1


У вільний час однокласники Вася і Петя люблять грати в різні логічні ігри: морський бій, хрестики-нулики, шахи, шашки та багато іншого. Хлопці вже випробували і пограли у всілякі класичні гри подібного роду, включаючи комп'ютерні. Одного разу їм захотілося зіграти будь-що-небудь нове, але нічого підходящого знайти не вдалося. Тоді Петя придумав наступну гру «Угадайка»: Грають двоє учасників. Перший загадує будь тризначне число, таке що перша і остання цифри відрізняються один від одного більш ніж на одиницю. Далі загадав число гравець перевертає загадане число, змінюючи першу і останню цифри місцями, таким чином отримуючи ще одне число. Потім з максимального з отриманих двох чисел віднімається мінімальне. Завдання другого гравця - вгадати по першій цифрі отриманого в результаті віднімання числа саме це число. Наприклад, якщо Вася загадав число 487, то перестановкою першої і останньої цифри він отримає число 784. Після чого йому доведеться відняти від 784 число 487, в результаті чого вийде число 297, яке і має відгадати Петя по вказаній першій цифрі «2», взятої з цього числа. Петя встигає краще Васі з математики, тому практично завжди виграє в іграх такого типу. Але в даному випадку Петя схитрував і спеціально придумав таку гру, в якій він не програє Васі в будь-якому випадку. Справа в тому, що придумана Петром гра має виграшну стратегію, яка полягає в наступному: шукане число завжди є тризначним і друга його цифра завжди дорівнює дев'яти, а для отримання значення останньої досить відняти від дев'яти першу, тобто в розглянутому вище випадку остання цифра дорівнює 9-2 = 7. Допоможіть Петі ще спростити процес відгадування числа за заданою його першої цифри, написавши відповідну програму.
Вхідні дані
У єдиному рядку вхідного файлу INPUT.TXT задана єдина цифра К, відповідна першій цифрі отриманого Васею в результаті віднімання найменшого задуманого Васею значення з найбільшого.
Вихідні дані

У вихідний файл OUTPUT.TXT потрібно вивести значення отриманої Васею різниці.


Задані перший і другий елементи арифметичної прогресії. Потрібно написати програму, яка визначить елемент прогресії по її номеру.
Вхідні дані
Вхідний файл INPUT.TXT містить три цілих числа, розділених пробілами - перший елемент прогресії A1 (1 ≤ A1 ≤ 1000), другий елемент прогресії A2 (1 ≤ A2 ≤ 1000), і номер необхідного елемента N (1 ≤ N ≤ 1000). 
1 5 3
Вихідні дані

Вихідний файл OUTPUT.TXT повинен містити одне ціле число - N-й елемент арифметичної прогресії.
Тут мова йде про такій послідовності чисел:
1, 5, 9, 13, 17, 21, ...

У даній послідовності D = 4, тому A1 = 1, A2 = A1 + D = 5, A3 = A1 + 2 * D = 9, і т.д. Оскільки нам потрібно було знайти 3й елемент прогресії, то відповіддю на завдання є число 9 ..



Дано два довільних масиви Р, G розміру n, m відповідно. Знайти суму квадратів елементів масиву Р і суму квадратів елементів масиву G.

Знайти суму тих елементів масиву, які кратні даному К
Дано натуральне число N і послідовність з  N елементів.  Потрібно вивести цю послідовність в зворотному порядку.
Вхідні дані
У першому рядку вхідного файлу INPUT.TXT записано натуральне число N (N ≤ 10). У другому рядку через пропуск йдуть N цілих чисел, по модулю не перевищують10- елементи послідовності.
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть задану послідовність в зворотному порядку.
Для заїзду в оздоровчий табір організатори вирішили замовити автобуси. Відомо, що в табір збираються поїхати N дітей і M дорослих. Кожен автобус вміщає K людей. У кожному автобусі, в якому поїдуть діти, має бути не менше двох дорослих.
Визначте, чи вдасться відправити у табір всіх дітей і дорослих, і якщо так, то яку мінімальну кількість автобусів потрібно для цього замовити.
Вхідні дані
У єдиному рядку вхідного файлу INPUT.TXT записано через пропуск 3 натуральних числа - N, M і K, кожне з них не перевищує 10 000.
Вихідні дані
У єдиний рядок вихідного файлу OUTPUT.TXT потрібно вивести кількість автобусів, які потрібно замовити. Якщо ж відправити всіх у табір неможливо, виведіть 0 (нуль).

По-перше: потрібно врахувати, що До може приймати значення менше або рівне 2. У цьому випадку слідує  виводити 0, тому, що в кожен автобус ми будемо змушені посидить дорослих (а діти так і не виїдуть). Тепер розглянемо випадок коли До більше двох: в тому випадку потрібно буде рівно n / (k-2) автобусів для перевезення дітей. Зауважимо, що якщо n не ділиться без остачі на k-2, то автобусів знадобитися на один більше. Так само ми не зможемо виїхати якщо кількість дорослих поділене на два менше кількості потрібних автобусів для перевезення дітей. У всіх інших випадках відповіддю буде (m + n) / k, але якщо (m + n) не ділиться без остачі на k то на один автобус більше

среда, 15 марта 2017 г.

Олімпіадні задачі c#

Хлопчик Петя будує з кубиків сходи. Сходи є кілька споруджуваних поруч башточок з кубиків, кожна з яких рівно на один кубик вище попередньої. Потрібно за наявним у хлопчика Петі числа кубиків визначити, який в кубиках буде висота останньої сходинки.
Вхідні дані
Вхідний файл INPUT.TXT містить число К - кількість кубиків у хлопчика Петі (1 <= K <= 106).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть кількість кубиків в останній сходинці у максимально високої драбини, яку можна побудувати з K кубиків

У різдвяний вечір на віконці стояло три квіточки, зліва на право: герань, крокус і фіалка. Щоранку Маша витирала віконце і міняла місцями стоячу праворуч квітку з центральним квіткою. А Таня кожен вечір поливала квіточки і міняла місцями ліву і центральну квітку. Потрібно визначити порядок квітів вночі після K днів.
Вхідні дані
У вхідному файлі INPUT.TXT міститься натуральне число K - число днів (K <= 1000).
Вихідні дані
У вихідний файл OUTPUT.TXT потрібно вивести три латинських букви: «G», «C» і «V» (великі літери без пробілів), які описують порядок квітів на віконці після закінчення K днів (зліва направо). Позначення: G - герань, C - крокус, V – фіалка
INPUT.TXT
OUTPUT.TXT
1
1
VGC
2
5
CVG



Задача. Петрик П'яточкін вишикував у рядок слоненят та рахує їх по кожному кольору окремо. Всього буває 8 кольорів слоненят. У рядок вишикувались N (10

Технічні умови. Програма зчитує з клавіатури ціле число N - кількість слоненят, потім, через пропуск - N чисел від 1 до 8, якими ми пронумеровали кожен колір в тій послідовності, в якій вони потрапляли на очі Петрику від початку рядка. Програма виводить на екран в один рядок через пропуски пари цілих чисел, де перше число пари - колір, а друге - кількість слоненят такого кольору.

Приклад.

Введення>12 1 1 2 3 3 1 5 6 8 7 6 5 
Виведення> 1 3 2 1 3 2 4 0 5 2 6 2 7 1 8 1
Розв'язання.
Використаємо для підрахунку слоників масив цілих чисел з восьми елементів. Ітий елемент масиву буде кількість слоників ітого кольору. Так як пам'ятати стрій слоників не потрібно, то будемо зчитувати по одному слонику і збільшувати на 1, елемент масиву з номером відповідного кольору.
Запишемо алгоритми мовами програмування.


Реалізація методу обміну значеннями. Створити метод swap для  обміну значеннями у масиві між  у п’ятим і шостим елементом.
На площині дано дві окружності. Потрібно перевірити, чи перетинаються вони.
Вхідні дані
Вхідний файл INPUT.TXT складається з двох рядків. На кожному рядку записана інформація про одному колі - координати її центру x і y (цілі числа, по модулю не перевищують 5000) і радіус (ціле число 1 ≤ r ≤ 1000).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть «YES», якщо кола перетинаються, і «NO» в іншому випадку.

 
Для початку визначимося з тим, що нам відомі радіуси кіл і вони рівні r1 і r2. Так само за формулою відстані між точками ми можемо обчислити відстань між центрами даних кіл:
r = sqrt ((x2-x1) 2 + (y2-y1) 2) 
Зауважимо також, що окружності будуть перетинатися тоді і тільки тоді, коли можливий трикутник зі сторонами r1, r2 і r. Фігуру, дві сторони якої лежать на третій або одна зі сторін має нульову довжину так само будемо вважати трикутником, тому що окружності можуть один одного стосуватися (r = r1 + r2), або повністю збігатися (r = 0).
Трикутник вважається можливим якщо сума двох будь-яких його сторін не менше третьої. Тобто в нашому випадку досить перевірити, що r1 + r2> = r і r + r2> = r1 і r + r1> = r2. При цьому бажано використовувати речові типи даних. Так само можна провести акуратне порівняння з урахуванням можливих похибок при обчисленнях
Втомлені від незвично теплу зиму, жителі вирішили дізнатися, чи дійсно це найдовша відлига за всю історію спостережень за погодою. Вони звернулися до синоптиків, а ті, в свою чергу, зайнялися дослідженнями статистики за минулі роки. Їх цікавить, скільки днів тривала найдовша відлига.
Відлигою вони називають період, в який середньодобова температура щодня перевищувала 0 градусів Цельсія. Напишіть програму, що допомагає синоптикам в роботі.
Вхідні дані
У вхідному файлі INPUT.TXT спочатку записано число N - загальна кількість даних днів (1 ≤ N ≤ 100). У наступному рядку через пропуск розташовується N цілих чисел, розділених пробілами. Кожне число - середньодобова температура в відповідний день. Температури - цілі числа і лежать в діапазоні від -50 до +50.
Вихідні дані
У вихідний файл OUTPUT.TXT потрібно вивести одне число - довжину найтривалішою відлиги, тобто найбільшу кількість послідовних днів, протягом яких середньодобова температура перевищувала 0 градусів. Якщо температура в кожен з днів була непозитивно, виведіть 0.
INPUT.TXT
OUTPUT.TXT
1
6
-20 30 -40 50 10 -10
2

На свій день народження Петя купив гарний і смачний торт, який мав ідеально круглу форму. Петя не знав, скільки гостей прийде на його день народження, тому змушений був розробити алгоритм, згідно з яким він зможе швидко розрізати торт на N рівних частин. Слід врахувати, що розрізи торта можна робити як по радіусу, так і по діаметру.
Допоможіть Петі вирішити цю задачу, визначивши найменшу кількість розрізів торта за заданою кількістю гостей.
Вхідні дані
Вхідний файл INPUT.TXT містить натуральне число N - кількість гостей, включаючи самого винуватця торжества (N <= 1000).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть мінімально можливу кількість розрізів торта.

Допоможіть Васі вирішити цю задачу, визначивши максимальне число не обов'язково рівних шматків, які може отримати Вася, розрізаючи піцу таким чином.
Вхідні дані
Вхідний файл INPUT.TXT містить натуральне число N - кількість прямих розрізів піци (N <= 1000).
Вихідні дані
У вихідний файл OUTPUT.TXT виведіть відповідь на задачу.
INPUT.TXT
OUTPUT.TXT
1
2
4
Використовуємо середню арифметичну прогресію (динамічне програмування)
static void Main(string[] args)
        {
            int n = Convert.ToInt32(Console.ReadLine()); ;
            Console.WriteLine(((n * (n + 1)) / 2 + 1));
  }