четверг, 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 то на один автобус більше