Задача 1: Пошук першого двозначного числа з різними цифрами
Умова задачі:
Введіть з клавіатури n цілих чисел. Знайти серед цих чисел перше двозначне число, яке складається з різних цифр та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Алгоритм розв'язання:
- Отримати кількість чисел n від користувача
- Для кожного числа від 1 до n:
- Зчитати число з клавіатури
- Перевірити, чи є число двозначним (10 ≤ число ≤ 99)
- Якщо так, перевірити, чи складається воно з різних цифр
- Якщо умови виконуються, запам'ятати число та його номер
- Вивести результат або "NO", якщо число не знайдено
using System; class Program { static void Main() { // Введення кількості чисел Console.Write("Введіть кількість чисел n: "); int n = int.Parse(Console.ReadLine()); int resultNumber = 0; int resultIndex = 0; bool found = false; // Обробка кожного числа for (int i = 1; i <= n; i++) { Console.Write($"Введіть число {i}: "); int number = int.Parse(Console.ReadLine()); // Перевірка, чи є число двозначним if (number >= 10 && number <= 99) { // Отримання цифр числа int firstDigit = number / 10; int secondDigit = number % 10; // Перевірка, чи цифри різні if (firstDigit != secondDigit) { resultNumber = number; resultIndex = i; found = true; break; // Знайшли перше відповідне число - виходимо } } } // Виведення результату if (found) { Console.WriteLine($"Результат: число {resultNumber}, порядковий номер {resultIndex}"); } else { Console.WriteLine("NO"); } Console.ReadKey(); } }
🔍 Пояснення ключових моментів:
- Перевірка двозначності:
number >= 10 && number <= 99 - Отримання цифр: перша цифра -
number / 10, друга -number % 10 - Перевірка різних цифр:
firstDigit != secondDigit - Оператор break: вихід з циклу після знаходження першого відповідного числа
📝 Приклад виконання:
Вхідні дані:
n = 5
Числа: 45, 23, 11, 67, 89
Результат:
Число 45, порядковий номер 1
Пояснення: 45 - перше двозначне число з різними цифрами (4 ≠ 5)
Задача 2: Пошук останнього числа в інтервалі, кратного b
Умова задачі:
Введіть з клавіатури n цілих чисел. Знайти серед цих чисел останнє число, яке належить інтервалу [x, y] та кратне b та його порядковий номер. Якщо таких чисел немає, то вивести NO.
Алгоритм розв'язання:
- Отримати n, x, y, b від користувача
- Для кожного числа від 1 до n:
- Зчитати число з клавіатури
- Перевірити, чи належить число інтервалу [x, y]
- Перевірити, чи кратне число b
- Якщо умови виконуються, запам'ятати число та його номер
- Вивести останнє знайдене число або "NO"
using System; class Program { static void Main() { // Введення даних Console.Write("Введіть кількість чисел n: "); int n = int.Parse(Console.ReadLine()); Console.Write("Введіть x: "); int x = int.Parse(Console.ReadLine()); Console.Write("Введіть y: "); int y = int.Parse(Console.ReadLine()); Console.Write("Введіть b: "); int b = int.Parse(Console.ReadLine()); int resultNumber = 0; int resultIndex = 0; bool found = false; // Обробка кожного числа for (int i = 1; i <= n; i++) { Console.Write($"Введіть число {i}: "); int number = int.Parse(Console.ReadLine()); // Перевірка умов if (number >= x && number <= y && number % b == 0) { resultNumber = number; resultIndex = i; found = true; } } // Виведення результату if (found) { Console.WriteLine($"Результат: число {resultNumber}, порядковий номер {resultIndex}"); } else { Console.WriteLine("NO"); } Console.ReadKey(); } }
🔍 Пояснення ключових моментів:
- Перевірка інтервалу:
number >= x && number <= y - Перевірка кратності:
number % b == 0 - Пошук останнього: не використовуємо break, оновлюємо результат для кожного відповідного числа
📝 Приклад виконання:
Вхідні дані:
n = 4, x = 10, y = 30, b = 5
Числа: 15, 25, 12, 20
Результат:
Число 20, порядковий номер 4
Пояснення: 20 - останнє число в інтервалі [10,30], кратне 5
Задача 3: Робота з випадковими числами
Умова задачі:
Одержати у програмі k випадкових цілих чисел у діапазоні від A до B та знайти кількість тих, що > C. Числа A (10<=A<=20), B(25<=B<=40), C (15<=C<=30) та k (10<=k<=15) одержати випадковим чином.
Алгоритм розв'язання:
- Згенерувати випадкові значення A, B, C, k в заданих діапазонах
- Згенерувати k випадкових чисел у діапазоні [A, B]
- Підрахувати кількість чисел, більших за C
- Вивести результати
using System; class Program { static void Main() { Random rand = new Random(); // Генерація A, B, C, k у заданих діапазонах int A = rand.Next(10, 21); // 10..20 int B = rand.Next(25, 41); // 25..40 int C = rand.Next(15, 31); // 15..30 int k = rand.Next(10, 16); // 10..15 Console.WriteLine($"Згенеровані параметри:"); Console.WriteLine($"A = {A}, B = {B}, C = {C}, k = {k}"); Console.WriteLine(); int countGreaterThanC = 0; Console.WriteLine("Згенеровані числа:"); // Генерація k чисел та підрахунок for (int i = 0; i < k; i++) { int randomNumber = rand.Next(A, B + 1); // A..B включно Console.Write(randomNumber + " "); if (randomNumber > C) { countGreaterThanC++; } } Console.WriteLine(); Console.WriteLine(); Console.WriteLine($"Кількість чисел більших за {C}: {countGreaterThanC}"); Console.ReadKey(); } }
🔍 Пояснення ключових моментів:
- Клас Random: для генерації випадкових чисел
- Next(min, max): генерує числа від min до max-1
- Діапазони: A∈[10,20], B∈[25,40], C∈[15,30], k∈[10,15]
- Увага!:
Next(A, B+1)для включення B у діапазон
📝 Приклад виконання:
Можливі результати:
A = 15, B = 35, C = 22, k = 12
Числа: 18 25 30 32 28 19 23 27 31 29 26 24
Кількість чисел > 22: 9
Задача 4: Пошук найменшого тризначного та найбільшого двозначного
Умова задачі:
Одержати випадковим чином 20 цілих чисел (від 50 до 150) та вивести їх на екран. Знайти серед них найменше тризначне число та найбільше двозначне число. Якщо є декілька таких чисел, то визначте порядкові номери останніх з них. Якщо немає таких чисел, то вивести повідомлення.
Алгоритм розв'язання:
- Згенерувати 20 випадкових чисел у діапазоні [50, 150]
- Знайти найменше тризначне число (100-150) та його останній номер
- Знайти найбільше двозначне число (50-99) та його останній номер
- Вивести результати
using System; class Program { static void Main() { Random rand = new Random(); int[] numbers = new int[20]; Console.WriteLine("Згенеровані числа:"); // Генерація та виведення чисел for (int i = 0; i < 20; i++) { numbers[i] = rand.Next(50, 151); // 50..150 Console.Write(numbers[i] + " "); if ((i + 1) % 10 == 0) // Перехід на новий рядок кожні 10 чисел Console.WriteLine(); } Console.WriteLine(); // Пошук найменшого тризначного числа та його останнього номера int minThreeDigit = int.MaxValue; int lastIndexThreeDigit = -1; // Пошук найбільшого двозначного числа та його останнього номера int maxTwoDigit = int.MinValue; int lastIndexTwoDigit = -1; for (int i = 0; i < 20; i++) { // Перевірка для тризначних чисел (100-150) if (numbers[i] >= 100 && numbers[i] <= 150) { if (numbers[i] <= minThreeDigit) { minThreeDigit = numbers[i]; lastIndexThreeDigit = i + 1; // +1 для порядкового номера } } // Перевірка для двозначних чисел (50-99) if (numbers[i] >= 50 && numbers[i] <= 99) { if (numbers[i] >= maxTwoDigit) { maxTwoDigit = numbers[i]; lastIndexTwoDigit = i + 1; // +1 для порядкового номера } } } // Виведення результатів Console.WriteLine("Результати:"); if (lastIndexThreeDigit != -1) { Console.WriteLine($"Найменше тризначне число: {minThreeDigit}, останній номер: {lastIndexThreeDigit}"); } else { Console.WriteLine("Тризначних чисел не знайдено"); } if (lastIndexTwoDigit != -1) { Console.WriteLine($"Найбільше двозначне число: {maxTwoDigit}, останній номер: {lastIndexTwoDigit}"); } else { Console.WriteLine("Двозначних чисел не знайдено"); } Console.ReadKey(); } }
🔍 Пояснення ключових моментів:
- Тризначні числа: 100-150 (включно)
- Двозначні числа: 50-99 (включно)
- Пошук останнього: оновлюємо індекс при знаходженні числа з такою ж величиною
- Ініціалізація: використовуємо MaxValue/MinValue для коректного порівняння
Задача 5: Пошук взаємно простих чисел
Умова задачі:
Дано два натуральних числа A та В. Знайти перші 10 натуральних чисел, що більше за А та взаємно прості з В.
Алгоритм розв'язання:
- Отримати числа A та B від користувача
- Для чисел від A+1 до нескінченності:
- Перевірити, чи є число взаємно простим з B (НСД = 1)
- Якщо так, додати до результату
- Зупинитись, коли знайдемо 10 чисел
- Вивести результати
using System; class Program { // Функція для знаходження НСД (алгоритм Евкліда) static int GCD(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } // Функція перевірки взаємної простоти static bool AreCoprime(int a, int b) { return GCD(a, b) == 1; } static void Main() { // Введення даних Console.Write("Введіть число A: "); int A = int.Parse(Console.ReadLine()); Console.Write("Введіть число B: "); int B = int.Parse(Console.ReadLine()); Console.WriteLine($"Перші 10 чисел більших за {A}, взаємно простих з {B}:"); int count = 0; int currentNumber = A + 1; // Пошук 10 взаємно простих чисел while (count < 10) { if (AreCoprime(currentNumber, B)) { Console.Write(currentNumber + " "); count++; } currentNumber++; } Console.WriteLine(); Console.ReadKey(); } }
🔍 Пояснення ключових моментів:
- Взаємно прості числа: числа, у яких НСД = 1
- Алгоритм Евкліда: ефективний спосіб знаходження НСД
- Пошук чисел: перевіряємо числа послідовно, починаючи з A+1
- Умовний оператор:
currentNumber > Aгарантовано, оскільки починаємо з A+1
📝 Приклад виконання:
Вхідні дані:
A = 15, B = 10
Результат:
17 19 21 23 27 29 31 33 37 39
Пояснення: Ці числа більші за 15 та взаємно прості з 10 (не мають спільних дільників з 10, крім 1)
💡 Математична довідка:
Два числа називаються взаємно простими, якщо їх найбільший спільний дільник (НСД) дорівнює 1. Наприклад, 15 і 28 - взаємно прості, оскільки НСД(15,28)=1.