Як вирішувати подібні завдання з ІВТ (Паскаль, підготовка до ЄДІ) (див.

завдання. нижче записаний алгоритм. Отримавши на вхід число х, цей алгоритм друкує два числа: a та b. вкажіть найменше з таких чисел x, під час введення яких алгоритм друкує спочатку 13, а потім 5.

var x, a, b, c:integer;

завдання. є алгоритм. отримавши на вхід число х, він друкує два числа a та b. Необхідно вказати найбільше з чисел х, під час введення якого алгоритм надрукує спочатку 2, та був 26.

var x, a, b:integer;

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

Дані завдання відносяться до завдань ЄДІ з інформатики, суть яких - аналіз коду програми, що містить цикли та розгалуження. Від вирішального завдання потрібно проаналізувати хід виконання програми, при цьому необхідно знати особливості виконання циклів, а як і суть роботи операторів div і mod.

Оператор div виконує цілий поділ (без залишку), наприклад, значенням виразу 56 div 10 буде 5. Інший приклад: 5 div 10 дає 0, оскільки ділене менше дільника.

Оператор mod видає залишок від цілого поділу, наприклад, значенням виразу 56 mod 10 буде 6. Інший приклад: 5 mod 10 дорівнює 5.

Тепер розглянемо перший із запропонованих алгоритмів.

  1. Цикл while виконується доти, доки число x залишається великим 10. Наприкінці кожного етапу виконання циклу число х націло ділиться на 10, тобто від нього відсікається остання цифра. Таким чином, якщо x - однозначне число, більше нуля, то цикл виконається одноразово, якщо x - двозначне - двократно і т.д. Таким чином, цикл призначений для перебору цифр у числі x.
  2. Змінна c є допоміжною, і на кожному кроці виконання циклу єостанню цифру числа x, значення якого змінюється циклі (див. пункт 1).
  3. Змінна a призначена для підсумовування всіх цифр числа x: перед початком циклу вона обнулена, кожному етапі виконання циклу до її значення додається остання цифра числа x.
  4. Змінна b призначена для збереження значення найменшої цифри в числі x: перед початком циклу їй надано значення 10, далі, якщо поточне значення змінної c менше b, то b надається значення c.

Отже, потрібно, щоб на виході ми як значення a отримали б 13, а значення b - 5 при найменшому можливому x. У такому разі нам відомо, що число x – двозначне, одна з його цифр – 5, а сума цифр числа дорівнює 13. Очевидно, що цій умові задовольняє число 85: друга цифра числа – це 8, а 85 більше 58.

Тепер розглянемо другий код.

  1. Цикл виконується доти, доки число x залишається більшим 100. Після виконання чергового кроку циклу число x націло ділиться на 100.
  2. Змінна a, обнулена спочатку, зберігає кількість виконаних кроків циклу, тобто знаємо, що цикл повинен виконатися двічі. Тобто, число x є чотиризначним, оскільки ми шукаємо найбільше число.
  3. Змінна b, обнулена спочатку, зберігає суму залишків від цілісного поділу b на 100. Така операція відсікає від цисла дві останні цифри.

Що це означає? Припустимо, було введено число 1234. На першому етапі циклу отримаємо:

b = 0 + (1234 mod 100) = 34. Тобто b – це число – останні дві цифри числа x.

На другому кроці виконання циклу число x дорівнюватиме 12 (1234 div 100=12). b = 45 + (12 mod 100) = 34 +12 = 46. Тобто на другому кроці виконання циклу ми до попереднього значення додаємо число - перші дві цифри числа x, та отриманасума виводиться на друк.

Отже, ми знаємо, що x - чотиризначне число, сума двох чисел - перших двох та останніх двох цифр якого повинна дорівнювати 26). Треба розбити число 26 на відповідні доданки так, щоб одне з них було максимально можливим. Отримуємо: 26 = 26 +0

Найбільшою кількістю буде 2600.

Підбірка посилань щодо вирішення таких завдань :

Безліч розібраних прикладів схожих завдань можна знайти тут і тут.