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

c#

Олімпіада

Олімпіада почалася в h1 год m1 хв s1 сек, а закінчилася цієї ж календарної доби в h2 год m2 хв s2 сек. Скільки часу (год хв сек) тривала олімпіада?

Вхідні дані

У першому рядку записано час початку, а у другому - час закінчення олімпіади у форматі год хв сек.
0 ≤ h1 ≤ h2 ≤ 23, 0 ≤ m1, m2 ≤ 59, 0 ≤ s1, s2 ≤ 59.

Вихідні дані

У єдиний рядок вихідного файлу потрібно записати час, який тривала олімпіада у форматі год хв сек.
Вхідні дані #1
9 30 0
12 45 30
Вихідні дані #1
3 15 30
static void Main(string[] args)
        {
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int h1 = int.Parse(massiv[0]);
            int m1 = int.Parse(massiv[1]);
            int s1 = int.Parse(massiv[2]);
            s = Console.ReadLine();
            massiv = s.Split(' ');
            int h2 = int.Parse(massiv[0]);
            int m2 = int.Parse(massiv[1]);
            int s2 = int.Parse(massiv[2]);
            int a = 3600 * h1 + 60 * m1 + s1;
            int b = 3600 * h2 + 60 * m2 + s2;
            int h3 = (b - a) / 3600;
            int m3 = (b - a - 3600 * h3) / 60;
            int s3 = b - a - 3600 * h3 - 60 * m3;
            Console.WriteLine("{0} {1} {2}", h3, m3, s3);
        }
Кількість слів
Є деяке речення на невідомій мові. Порахувати кількість слів у ньому. Літерами алфавіту у невідомій мові є літери латинського алфавіту та арабські цифри. Гарантується, що інших символів, крім пропусків та розділових знаків у реченні нема.
Вхідні дані
У єдиному рядку дано речення на невідомій мові.
Вихідні дані
Єдине число - кількість слів у ньому.
static void Main(string[] args)
        {
            string s = Console.ReadLine();
            s = s.Replace("-", "");
            s = s.Trim();
             while (s.Contains("  "))
            {
                s = s.Replace("  ", " ");
            }
            int k = s.Split(' ').Length;
            Console.WriteLine(k);
        }
Білі кубики
Професор Самодєлкін задумав виготовити кубики з брусків білого кольору. Довжина кожного ребра дорівнює 1 дм. Після виготовлення кубиків професор вирішив зробити всі кубики також білого кольору. Скільки кубиків із стороною 1 дм зможе виготовити з одного бруска професор, та скільки сторін прийдеться йому пофарбувати, якщо відомо, що довжини сторін брусків - цілі числа і задані також в дециметрах.
Вхідні дані
Один рядок містить три цілих числа – розміри бруска в дм, які не перевищують 1000000.
Вихідні дані
В єдиному рядку записати через пропуск два цілих числа: кількість отриманих кубиків та кількість граней кубиків, які необхідно пофарбувати.
Вхідні дані
1 2 3
Вихідні дані
6 14
static void Main(string[] args)
        {
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            long a = long.Parse(massiv[0]);
            long b = long.Parse(massiv[1]);
            long c = long.Parse(massiv[2]);
            long r = 2 * (a * b + a * c + b * c);
            long k = a * b * c;
            Console.WriteLine("{0} {1}", k, 6 * k - r);
        }

Два потяги

Два потяги з різних населених пунктів одночасно виїжджають назустріч один одному і через t годин вони зустрілись. Іще через t1 годин перший потяг прибув у пункт з якого виїхав другий потяг. Через який час другий потяг прибуде в пункт, з якого виїхав перший потяг.

Вхідні дані

Два цілих невід'ємних числа t та t1 (не перевищують 24).

Вихідні дані

Вивести час, через який другий потяг прибуде в кінцевий пункт у форматі години хвилини.
Вхідні дані #1
4 3
Вихідні дані #1
Другий потяг прибуде до кінцевого пункту через t2 / t1 годин або через
// tm = 60 * t2 / t1 хвилин. Представляв це час у вигляді годин h годин m хвилин.

5 20
static void Main(string[] args)
        {
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int t = int.Parse(massiv[0]);
            int t1 = int.Parse(massiv[1]);
            int tm = 60 * t * t / t1;
            Console.WriteLine("{0} {1}", tm / 60 , tm % 60);
        }

Гарне число

"Гарним" будемо вважати число, що складається лише з непарних цифр. Наприклад число 157953 гарне, а число 2452117 ні. Необхідно з'ясувати, скільки існує n - значних гарних чисел.

Вхідні дані

Одне ціле невід'ємне число n (1 ≤ n ≤ 20).

Вихідні дані

Вивести кількість гарних чисел.
Вхідні дані #1
4
Вихідні дані #1
625
5^n
static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            long res = 1;
            for (int i = 0; i < n; i++) res *= 5;
            Console.WriteLine("\n"+res);
          
        }

Найбільший елемент масиву

Дано масив з N цілих чисел. Знайти найбільший елемент масиву.

Вхідні дані

В першому рядку записано число N. В наступному рядку записано N цілих чисел. Всі числа не перевищують 100.

Вихідні дані

Відповідь до задачі
Вхідні дані #1
5
5 9 3 4 6
Вихідні дані #1
9

static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int i;
            int max = -1001;
            for (i = 0; i < n; i++)
            {
                int c = int.Parse(massiv[i]);
                if (c > max) max = c;
            }
            Console.WriteLine(max);
        }

Сума без максимального

Дано масив з n цілих чисел. Знайти суму всіх елементів масиву які не дорівнюють максимальному.

Вхідні дані

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

Вихідні дані

Вивести суму всіх елементів масиву які не дорівнюють максимальному.
  static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int i;
            int max = -1001; int sum = 0; int c;
            for (i = 0; i < n; i++)
            {
                 c = int.Parse(massiv[i]);
                if (c > max) max = c;
              
            }
            for (i = 0; i < n; ++i) if (int.Parse(massiv[i]) != max) sum += int.Parse(massiv[i]);
            Console.WriteLine(sum);
        }

Кількість максимальних

Дано масив з N цілих чисел. Знайти кількість максимальних елементів масиву.

Вхідні дані

В першому рядку записано число N. В наступному рядку записано N цілих чисел. Всі числа не перевищують по модулю 100.

Вихідні дані

Відповідь до задачі
Вхідні дані #1
5
1 6 2 6 2
Вихідні дані #1
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int i;
            int max = -1001; int k = 0; int c;
            for (i = 0; i < n; i++)
            {
                 c = int.Parse(massiv[i]);
                if (c > max) max = c;
              
            }
            for (i = 0; i < n; ++i) if (int.Parse(massiv[i]) == max) k++;
            Console.WriteLine(k);
        }

Більші за середнє арифметичне

Дано масив з N цілих чисел. Знайти суму та кількість чисел, які більші за середнє арифметичне елементів масиву.

Вхідні дані

В першому рядку записано число N. В наступному рядку записано N цілих чисел. Всі числа не перевищують 100.

Вихідні дані

Відповідь до задачі
Вхідні дані #1
5
1 6 2 6 3
Вихідні дані #1
12 2
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int i;
            int k = 0; int sum=0; int c;
            for (i = 0; i < n; i++)
            {
                 c = int.Parse(massiv[i]);
                 sum = sum + c;              
            }
            double sn = 1.0 * sum / n;
            sum = 0;
            for (i = 0; i < n; ++i) if (int.Parse(massiv[i]) > sn)
                {
                    sum = sum + int.Parse(massiv[i]);  
                k++;           
            }
            Console.WriteLine(sum+" "+k);
        }

Парні індекси

Дано масив з N цілих чисел. Виведіть всі його елементи з парними індексами.

Вхідні дані

В першому рядку записано число N. В наступному рядку записано N цілих чисел. Всі числа за модулем не перевищують 100.

Вихідні дані

Всі елементи масиву з парними індексами.
Вхідні дані #1
7
14 16 3 7 17 19 9
Вихідні дані #1
14 3 17 9
static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int i;
            for (i = 0; i < n; i++)
            {
                  int.Parse(massiv[i]);
                  if (i % 2 == 0) Console.Write(int.Parse(massiv[i]) + " "); ;              
            }       
           }

Непарні елементи

Дано масив з n цілих чисел. Виведіть всі його непарні елементи.

Вхідні дані

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

Вихідні дані

Вивести усі непарні елементи масиву у тому ж порядку як вони зустрічаються на вході.
Вхідні дані #1
7
14 17 16 3 7 19 9
Вихідні дані #1
17 3 7 19 9
  static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            string s = Console.ReadLine();
            var massiv = s.Split(' ');
            int i;
            for (i = 0; i < n; i++)
            {
                int.Parse(massiv[i]);
                if (int.Parse(massiv[i]) % 2 != 0) Console.Write(int.Parse(massiv[i]) + " ");
            }
      }

 Точка та коло
Визначте, чи належить точка A, що задана координатами (xy), частині площини, обмеженій колом радіуса R із центром у точці O (x0y0).
Вхідні дані
У першому рядку задано через пропуск координати точки A (xy). У другому рядку задано через пропуск три цілі числа: спочатку радіус кола R (0 < R ≤ 200) а потім координати його центру O (x0y0). Всі координати цілі числа, значення яких по модулю не перевищує 200.
Вихідні дані
У єдиному рядку вивести повідомлення YES - у випадку коли точка належить вказаній частині площини, NO - у випадку, якщо не належить, та ON BORDER - у випадку, якщо нам "повезло" і точка належить кривій, яка описує коло.
Вхідні дані
2 3
5 1 2
Вихідні дані
YES

private static double Mesafe(int a, int b, int c, int d)
        {
            return Math.Sqrt((a - c) * (a - c) + (b - d) * (b - d));
        }
        static void Main(string[] args)
        {
            string setir = Console.ReadLine();
            var massiv = setir.Split(' ');
            int x = int.Parse(massiv[0]);
            int y = int.Parse(massiv[1]);
            setir = Console.ReadLine();
            massiv = setir.Split(' ');
            int r = int.Parse(massiv[0]);
            int x0 = int.Parse(massiv[1]);
            int y0 = int.Parse(massiv[2]);
            double mesafe = Mesafe(x0, y0, x, y);
            if (mesafe == r) Console.WriteLine("ON BORDER");
            else Console.WriteLine(mesafe < r ? "YES" : "NO");
        }