понедельник, 30 октября 2017 г.

c#

Завдання
1)Написати калькулятор за заданим малюнком (С#,Forms);
 private void button19_Click(object sender, EventArgs e)
        {
            try
            {
                a = Convert.ToDouble(textBox1.Text);
                textBox1.Text = "";
                c = '*';
            }
            catch (Exception)
            {

            }
        }

        private void button16_Click(object sender, EventArgs e)
        {
            b = Convert.ToDouble(textBox1.Text);
            textBox1.Text = "";
            switch (c)
            {
                    case '*':
                    textBox1.Text = Convert.ToString(a * b);
                    break;

                case '+':
                    textBox1.Text = Convert.ToString(a + b);
                    break;

                case '-':
                    textBox1.Text = Convert.ToString(a - b);
                    break;

                case '/':
                    textBox1.Text = Convert.ToString(a / b);
                    break;
            }

2) Написати програму для розвязання квадратного рівняння(знаходження коренів) за заданим малюнком (С#,Forms);




Ювілей Вінні-Пуха
Ось і настав довгоочікуваний Ювілей Вінні-Пуха. У чарівний ліс на свято зібралось багато гостей. У тому числі Вінні-Пух запросив до себе друзів з інших галактик. Нажаль, коли він відсилав запрошення, він зовсім забув, що на планеті, де живуть його друзі інопланетяни, усі читають не зліва направо, а зправа наліво. Вінні-Пух розуміє, що до Ювілею вони вже не прилетять, але ведмежа не сумує. Він хоче перевірити, чи правда, що дата його Ювілею, прочитана зправа наліво, також існує, і інопланетяни прилетять в інший день. Допоможіть Вінни-Пуху визначити, чи чекати йому в гості інопланетних друзів.
Вхідні дані
Вхідний файл містить дату Ювілею Вінні-Пуха у форматі dd.mm.gggg. Гарантується, що дата коректна.
Вихідні дані
У вихідний файл потрібно вивести YES, якщо дата, яка читається зправа наліво коректна, і NO у протилежному випадку.
Вхідні дані
Sample 1
23.02.2002

Sample 2
20.02.2023
Вихідні дані
Sample 1
YES

Sample 2
NO
  private static string Gu(string x)
        {
            string y = "";
            int len = x.Length;
            for (int i = 0; i < len; i++) y = x[i] + y;
            return y;
        }

        static void Main(string[] args)
        {
            string s = Console.ReadLine();
            s = s.Replace(".", "");
            s = Gu(s);
            int d = int.Parse(s.Substring(0, 2));
            int m = int.Parse(s.Substring(2, 2));
            int y = int.Parse(s.Substring(4));
            if (0 < m && m <= 12 && d > 0)
            {
                if (m == 2 && (((y % 400 == 0 || y % 100 != 0 && y % 4 == 0) && d <= 29) || d <= 28))
                {
                    Console.WriteLine("YES");
                    return;
                }
                if ((m == 4 || m == 6 || m == 9 || m == 11) && d <= 30)
                {
                    Console.WriteLine("YES");
                    return;
                }
                if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d <= 31)
                {
                    Console.WriteLine("YES");
                    return;
                }
                Console.WriteLine("NO");
            }
            else Console.WriteLine("NO");
        }

Баланс дужок

Є рядок, що містить дужки ( ) та [ ]. Дужковий вираз вважається правильним, якщо:
  • він є порожнім
  • якщо A та B правильні, то AB правильно
  • якщо A правильно, то (A) та [A] правильні
Напишіть програму, яка за вхідним рядком, що містить дужковий вираз, визначить його правильність. Довжина рядка не більша за 128символів.

Вхідні дані

Перший рядок містить кількість тестів n. Кожний з наступних n рядків містить вираз, який складається із дужок ( ) та [ ].

Вихідні дані

Для кожного тесту вивести в окремому рядку "Yes", якщо вираз є правильним і "No" інакше.
Вхідні дані #1
3
([])
(([()])))
([()[]()])()
Вихідні дані #1
Yes
No
Yes
private static bool H(string x)
        {
            while (x.Contains("()") || x.Contains("[]"))
            {
                x = x.Replace("()", "");
                x = x.Replace("[]", "");
                x = x.Replace("()", "");
                x = x.Replace("[]", "");
            }
            return x.Length == 0;
        }

        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            for (int i = 0; i < n; i++)
            {
                string s = Console.ReadLine();
                Console.WriteLine(H(s) ? "Yes" : "No");
            }
        }
Фінансування
В останній час уряд Республіки турбує ситуація з важкою промисловістю. На останньому зібранні Сенату було вирішено виділити на такий приорітетний напрямок X кредитів з державного бюджету. Було зібрано спеціальну Комісію з 13 непідкупних та безпристрастних чиновників, призвана контролювати витрату коштів на будівництво. Після першого консиліуму цієї комісії було вирішено розподілити отримані кошти порівну між чиновниками Комісії, а уже кредити, що залишились, витратити на важку промисловість. Число кредитів, присвоєних кожним чиновником з 13, повинно бути цілим. Звичайно, чиновники хочуть отримати якомога більше. Обчисліть, скільки коштів при такому розкладі дійсно піде на розвиток галузі.
Вхідні дані
Число Х – кількість коштів, виділених на розвиток важкої промисловості (0 ≤ X ≤ 10100).
Вихідні дані
Виведіть кількість коштів, які підуть на розвиток важкої промисловості згідно рішення Комісії.
Вхідні дані
Sample 1
1

Sample 2
26

Sample 3
100
Вихідні дані
Sample 1
1

Sample 2
0

Sample 3
9
static void Main(string[] args)
        {
            BigInteger x = BigInteger.Parse(Console.ReadLine());
            Console.WriteLine(x % 13);
   }
Скільки до Нового Року?
У Діда Мороза є годинник, який в секундах показує скільки залишилось до кожного Нового Року. Оскільки Дід Мороз вже літня людина, то деякі математичні операції він не в змозі швидко виконувати. Допоможіть Діду Морозу визначити скільки повних днів, годин, хвилин та секунд залишилось до наступного Нового Року, якщо відомо скільки залишилось секунд, тобто розкладіть час в секундах на повну кількість днів, годин, хвилин та секунд.
Вхідні дані
У єдиній стрічці ціле число N (0 < N≤ 31500000) – кількість секунд, що залишилось до Нового Року.
Вихідні дані
В одній стрічці через пропуск чотири цілих числа – кількість повних днів, годин, хвилин та секунд. Після останного числа пропуск відсутній.
Вхідні дані
21009
Вихідні дані
0 5 50 9

static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int g = n / 86400;
            int s = (n - g * 86400) / 3600;
            int d = (n - g * 86400 - s * 3600) / 60;
            int m = n - g * 86400 - s * 3600 - d * 60;
            Console.WriteLine("{0} {1} {2} {3}", g, s, d, m);

        }

четверг, 26 октября 2017 г.

c#

Вася та кулі

Нещодавно Вася взнав, що з кулями можна грати у дуже захоплюючу гру. У цій грі потрібно складати кулі у вигляді різноманітних геометричних фігур та тіл. Поки що Вася займається викладуванням куль у вигляді рівносторонього трикутника. Але ось невдача: іноді Васі не вистачає наявних куль, і він хоче знати, яка найбільша сторона такого трикутника, для якого вистачить Васиних куль? Допоможіть Васі, напишіть для нього програму, яка буде обчислювати n - довжину сторони рівносторонього трикутника для заданої кількості куль k.
Нижче наведено приклад укладки куль у вигляді рівностороннього трикутника:
prb4538.gif

Вхідні дані

Натуральне число k (0 ≤ k ≤ 2 *108) - наявна кількість куль.

Вихідні дані

Вивести число n - відповідь до задачі.
Вхідні дані #1
6
Вихідні дані #1
3

using System;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            int k = int.Parse(Console.ReadLine());
            int c = 0;
            int n = 0;
            while (c <= k)
            {
                n++;
                c = c + n;
            }
            Console.WriteLine(n - 1);
        }
    }
}

Шеренга

Петя Васічкін перейшов у іншу школу. На уроці фізкультури йому потрібно визначити своє місце в строю...

Вхідні дані

Спочатку вводиться кількість учнів n у класі. Потім задана незростаюча послідовність з n чисел, що позначає зріст кожної людини в строю. Далі йде зріст x Петі. Усі числа натуральні та не перевищують 200.

Вихідні дані

Вивести номер, під яким Петя повинен стати у строй. Якщо в строю є учні з однаковим зростом як у Петі, то він повинен стати після них.
Вхідні дані #1
8
165 163 160 160 157 157 155 154
162
Вихідні дані #1
3
static void Main(string[] args)
        {

            int n = int.Parse(Console.ReadLine());
            var s = Console.ReadLine();
            var massiv = s.Split(' ');
            int Vasichkin = int.Parse(Console.ReadLine());
            for (int i = 0; i < n; i++)
            {
                if (Vasichkin > int.Parse(massiv[i]))
                {
                    Console.WriteLine(i + 1);
                    return;
                }
            }
            Console.WriteLine(n + 1);
        }

Грушеве дерево
prb382У Васиної бабусі у садку росте багато різних плодових дерев. Одне грушеве дерево вона посадила у день народження Васі і сказала, що як тільки воно почне плодоносити, Вася повиен з`їдати всі дозрівші на ньому груші. У цьому році на Васиній груші вперше з`явились плоди. Вася перерахував всі плоди - їх виявилось N штук. Як тільки достигли перші груші, Вася перерахував їх і з`їв. Їх було K штук - чудових, великих і соковитих. Виявилось, що кожен день дозріває на M штук більше, ніж у попередній день. Бабуся сказала, що груші дуже корисні для Васиного здоров`я, і, відповідно, кожен день Вася повинен їсти їх якомога більше. На щастя, груші виявились такими смачними, що кожен день Вася з`їдає всі достигші в цей день і радує цим свою бабусю.
Скільки груш Вася з`їсть в останній день, коли дистигне N-а груша?
Вхідні дані
У вхідном файлі задано цілі числа NK та M. Всі числа не перевищують 1000000000.
Вихідні дані
Вивести одне ціле число - відповідь на задачу.
Вхідні дані
Sample 1
10 1 1

Sample 2
100 20 10
Вихідні дані
Sample 1
4

Sample 2
10
static void Main(string[] args)
        {
              string setir = Console.ReadLine();
            var massiv = setir.Split(' ');
            int n = int.Parse(massiv[0]);
            int k = int.Parse(massiv[1]);
            int m = int.Parse(massiv[2]);
            while (n > 0)
            {
                if (n <= k)
                {
                    k = n;
                    n = n - k;
                }
                else
                {
                    n = n - k;
                    k = k + m;
                }
            }
            Console.WriteLine(k);
                }

Книга
Крім слідкування за офісом з вікна свого будинку, влітку Василько читав книжку. Щоб читати було не так нудно, він попутно рахував кількість цифр, які потрібно для нумерації всіх сторінок у книжці. В результатеі він отримав N цифр.
Вася пом`ятає, що на перших трьох сторінках книжки номери не стоять, а пронумеровані сторінки починаються з 4-ї (при цьому на цій 4-й сторінці стоїть номер 4, на наступній — 5, і так далі).
Тепер Василька цікавить питання, скільки ж всього сторінок було у прочитаній ним книжці.
Вхідні дані
Вводиться одне натуральне число N (1 ≤ N≤ 10000) — кількість цифр, які було використано для нумерації сторінок книжки.
Вихідні дані
Виведіть кількість сторінок в книжці. Гарантується, що Василько не помилився в підрахунках, і відповідь завжди існує.
Вхідні дані
Sample 1
1

Sample 2
2

Sample 3
3

Sample 4
10
Вихідні дані
Sample 1
4

private static int Ra(int x)
        {
            if (x < 10) return 1;
            if (x < 100) return 2;
            if (x < 1000) return 3;
            return 4;
        }

        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int s = 3;
            while (n > 0)
            {
                s++;
                n = n - Ra(s);
            }
            Console.WriteLine(s);
                }

Торт

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

Вхідні дані

Містить три натуральних числа: радіус столу r (1 ≤ r ≤ 1000), ширину торту w та довжину торту l (1 ≤ w ≤ l ≤ 1000).

Вихідні дані

Вивести слово YES, якщо торт поміщається на столі, і слово NO у протилежному випадку.
Вхідні дані #1
38 40 60
Вихідні дані #1
YES
              static void Main(string[] args)
        {
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int r = int.Parse(massiv[0]);
            int w = int.Parse(massiv[1]);
            int l = int.Parse(massiv[2]);
            Console.WriteLine(Math.Sqrt(w * w + l * l) <= 2 * r ? "YES" : "NO");
                }

Кількість речень

Визначити кількість речень у заданому фрагменті тексту.

Вхідні дані

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

Вихідні дані

Єдине число - кількість речень у фрагменті.
Вхідні дані #1
Hello world!
Вихідні дані #1
1
static void Main(string[] args)
        {
            var s = Console.ReadLine();
            s = s.TrimStart(' ');
            s = s.TrimEnd(' ');
            while (s.Contains("  "))
            {
                s = s.Replace("  ", " ");
            }

            var say = s.Split(new[] { '.', '?', '!' }, StringSplitOptions.RemoveEmptyEntries).Length;
            Console.WriteLine(say);
        }    

Зсунь елементи

Задано масив цілих чисел довжини n. Зсунути елементи масиву циклічно праворуч на 1 крок.

Вхідні дані

У першому рядку задано кількість елементів масиву n (n ≤ 100). У другому рядку задано самі елементи масиву, значення кожного з яких за модулем не перевищує 100.

Вихідні дані

В єдиному рядку вивести n чисел - нові значення елементів масиву.
Вхідні дані #1
4
1 2 3 4
Вихідні дані #1
4 1 2 3
static void Main(string[] args)
        {
            int len = int.Parse(Console.ReadLine());
            string eded = Console.ReadLine();
            var massiv = eded.Split(' ');
            string c = massiv[len - 1];
            for (int i = 0; i < len - 1; i++)
            {
                c = c + " " + massiv[i];
            }
            Console.WriteLine(c);
        }    
Яка чверть?
Задано точку з координатами х та у. Визначити, в якій координатній чверті вона розміщена.
Вхідні дані
У єдиному рядку через пропуск задано 2 дійсні числа - координати точки, значення координат по модулю не перевищують 100.
Вихідні дані
Єдине число - номер відповідної чверті, або 0, якщо однозначно визначити чверть неможливо.
Вхідні дані
12 31
Вихідні дані
1
  static void Main(string[] args)
        {
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            double x = double.Parse(massiv[0]);
            double y = double.Parse(massiv[1]);
            if ((x == 0) || (y == 0)) Console.WriteLine("0");
            if ((x > 0) && (y > 0)) Console.WriteLine("1");
            if ((x < 0) && (y > 0)) Console.WriteLine("2");
            if ((x < 0) && (y < 0)) Console.WriteLine("3");
            if ((x > 0) && (y < 0)) Console.WriteLine("4");
        }    

Модуль максимального

Задана послідовність дійсних чисел. Обчислимо їх модулі. Знайдіть максимальне значення серед цих модулей.

Вхідні дані

У першому рядку задано кількість елементів n (n ≤ 100) у послідовності. У наступному рядку задано n дійсних чисел - елементи послідовності, значення яких не первищують за модулем 100.

Вихідні дані

Виведіть максимальне значення серед цих модулей з 2 десятковими знаками.
Вхідні дані #2
4
-76.45 7.5 -5.1 75.23

Вихідні дані #2
76.4
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            double max = -100;
            for (int i = 0; i < n; i++)
            {
                double d = double.Parse(massiv[i]);
                if (d > max) max = d;
            }
            max = Math.Abs(max);
            Console.WriteLine("{0:N2}", Math.Round(max,2));

        }