Назад Зміст Вперед

Задачі на зміну цифр натурального числа

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

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

Число 4131 насправді має такий склад:

4131=4*1000+1*100+3*10+1=4*103+1*102+3*101+1*100

Число 10, степені якого використовуються у цій формулі називається основою системи числення, а степені десятки – це вага цифри.

Приклад 1

Дано натуральне число. Припишіть 5 в початок цього числа. Наприклад, було 324, стало 5324.

Результат роботи програми

Ввід Вивід
324 5324

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

Щоб отримати нове число m, потрібно цифру 5 помножити на її вагу у новому числі (у прикладі на 1000) та до цього добутку додати введене число n (у прикладі 5*1000+324=5324).

Задача зводиться до пошуку d ваги цифри 5 у новому числі. Для цього у циклі d умножаємо на 10, стільки разів, скільки цифр у числі. Як-то:

  1. виконуємо оператор d=d*10.
  2. Відкидаємо цифру з числа n.
  3. Все це повторюємо, поки не закінчаться цифри у числі n.

Тепер алгоритм докладніше:

  1. Спочатку потрібно ввести число.
  2. Введене число n нам буде потрібно в остаточній формулі. Але ми будемо від нього відкидати цифри для пошуку ваги цифри 5 у новому числі. Тому це число потрібно запам’ятати оператором x=n.
  3. Ми будемо використовувати d вагу цифри 5 у новому числі. Її потрібно накопичувати, як добуток, тому потрібно встановити початкове значення d=1.
  4. У циклі знаходимо вагу цифри 5 у новому числі. Для цього будемо виконувати такі дії:
    1. Оператор d=d*10 обчислює вагу наступної цифри.
    2. Оператор n=n / 10 відкидає останню цифру числа n.
    3. Перевіряється умова – чиє ще цифри у числі?
      1. Якщо цифри у числі є, то виконується перехід на початок циклу (пункт 4).
      2. Якщо цифр у числі немає, то цикл завершується і виконується перехід на оператор, що іде після циклу (пункт 5).
  5. Коли цикл закінчиться, обчислимо значення нового числа оператором m=5*d+x. У цій формулі використовуємо x замість n, тому що значення n вже 0.
  6. Потім виводимо на екран знайдене нове число.

Програма

#include <iostream>
using namespace std;
int main()
{
    long int n, x, d, m;  // n - вхідне число, x - копія числа, d - множник, m - результат
    cin >> n;  // Введення числа
    x = n;     // Збереження копії числа
    d = 1;     // Ініціалізація множника

    // Обчислення множника (10 у степені кількості цифр)
    do
    {
        d = d * 10;  // Збільшення множника
        n = n / 10;   // Відкидання останньої цифри
    } while (n > 0);  // Повторювати, доки є цифри

    m = 5 * d + x;  // Додавання 5 на початок числа
    cout << m;      // Виведення результату
    return 0;
}

Приклад 2

Дано натуральне число. Змініть у ньому всі цифри 1 на 2.

Результат роботи програми

Ввід Вивід
4131 4232

Змінні:

Вхідні:

  1. n – натуральне число (цілого типу long int)

    Вихідні:

    Проміжні:

    Алгоритм

    Скорочений алгоритм формування з введеного числа n нового числа m такий:

    1. Знаходимо c останню цифру числа n;
    2. Якщо ця цифра 1, змінюємо її на 2, якщо ні, то не змінюємо;
    3. Додаємо цю цифру c в початок нового числа m (враховуючі вагу цифри d).
    4. Відкидаємо цифру з числа n.
    5. Все це повторюємо, поки не закінчаться цифри у числі n.

    Щоб визначити формули, за якими будуть обчислюватись m та d складемо таблицю для нашого прикладу:

    Змінна c m d n
    Дія Обчислення останньої цифри Накопичуємо цифру у початок числа Вага цифри, степені числа 10 Відкидаємо останню цифру
    Початкове значення  0 1 4131
    1 виток циклу 1 змінюємо на 2 2 10 413
    2 виток циклу 3 32=3*10+2 100 41
    3 виток циклу 1 змінюємо на 2 232=2*100+32 1000 4
    Останній виток циклу 4 4232=4*1000+232 10000 0
    Формули c=n % 10 m= c*d + m d=d*10 n=n / 10

    Аналізуючи третій стовпчик таблиці можна заповнити комірку, де буде формула для обчислення нового числа m. Ясно, що для додавання цифри c у початок нового числа m потрібно умножати її на вагу d і цей добуток накопичувати у нове число m.

    Формула для обчислення степенів числа 10 нам відома. Можна записати її у четвертому стовпчику.

    Тепер алгоритм докладніше:

    1. Спочатку потрібно ввести число.
    2. Нам потрібно сформувати нове число m. Ми будемо його накопичувати, як суму, тому потрібно встановити початкове значення m=0.
    3. Ми будемо використовувати d вагу цифри у числі. Ми будемо її накопичувати, як добуток, тому потрібно встановити початкове значення d=1.
    4. У вже відомий нам алгоритм перебору цифр числа, додамо два оператори (обчислення m та d), які умовно можна назвати „формування нового числа”. Докладніше, у циклі будемо виконувати такі дії:
      1. Оператор c= n % 10 обчислює останню цифру числа.
      2. Оператор if (c==1) {c=2;} змінює цифру 1 на 2.
      3. Оператор m=m+c*d додає знайдену цифру у початок нового числа, враховуючі її вагу.
      4. Оператор d=d*10 обчислює вагу наступної цифри.
      5. Оператор n=n / 10 відкидає останню цифру числа.
      6. Перевіряється умова – чи є ще цифри у числі?
        1. Якщо цифри у числі є, то виконується перехід на початок циклу (пункт 4).
        2. Якщо цифр у числі немає, то цикл завершується і виконується перехід на оператор, що іде після циклу (пункт 5).
    5. Коли цикл закінчиться, тобто будуть видалені всі цифри числа n виводимо на екран знайдене нове число

    Програма

    #include <iostream>
    using namespace std;
    int main()
    {
        long int n, d, m;  // n - вхідне число, d - розряд множника, m - результуюче число
        int c;             // c - поточна цифра
        cin >> n;        // Введення числа
        m = 0;            // Ініціалізація результату
        d = 1;            // Початковий розряд (одиниці)
    
        do
        {
            c = n % 10;      // Отримання останньої цифри
            if (c == 1)       // Якщо цифра дорівнює 1
            {
                c = 2;        // Замінюємо її на 2
            }
            m = m + c * d;    // Додаємо цифру до результату з урахуванням розряду
            d = d * 10;       // Збільшуємо розряд (×10)
            n = n / 10;       // Видаляємо останню цифру
        } while (n > 0);      // Повторюємо, доки є цифри
    
        cout << m;           // Виведення результату
        return 0;
    }

    Приклад 3

    Дано натуральне число n. Вилучить у ньому всі 1.

    Результат роботи програми

    Ввід Вивід
    4131 43

    Змінні:

    Вхідні:

    Вихідні:

    Проміжні:

    Алгоритм

    Алгоритм формування з введеного числа n нового числа m без 1 відрізняється від алгоритму попередньої задачі тим, що оператори, які ми назвали „формування нового числа” виконуються тільки, коли цифра, яка переноситься у нове число не 1. Якщо цифра дорівнює 1, то ці оператори не виконуються і цифра в нове число не переноситься.

    Тепер алгоритм докладніше:

    1. Спочатку потрібно ввести число n.
    2. Встановимо початкове значення нового числа m=0.
    3. Встановимо початкове значення ваги d=1.
    4. У циклі будемо виконувати такі дії:
      1. Оператор c= n % 10 обчислює останню цифру числа.
      2. Якщо ця цифра не 1,то переносимо її у нове число:
        1. Оператор m=m+c*d додає знайдену цифру у початок нового числа, враховуючі її вагу.
        2. Оператор d=d*10 обчислює вагу наступної цифри.
      3. Оператор n=n / 10 відкидає останню цифру числа n.
      4. Перевіряється умова – чиє ще цифри у числі?
        1. Якщо цифри у числі є, то виконується перехід на початок циклу (пункт 4).
        2. Якщо цифр у числі немає, то цикл завершується і виконується перехід на оператор, що іде після циклу (пункт 5).
    5. Коли цикл закінчиться, тобто будуть видалені всі цифри числа n виводимо на екран знайдене нове число.

    Програма

    #include <iostream>
    using namespace std;
    int main()
    {
        long int n, d, m;  // n - вхідне число, d - множник розрядів, m - результат
        int c;             // c - поточна цифра числа
        cin >> n;         // Отримання вхідного числа
        m = 0;            // Ініціалізація результату
        d = 1;            // Початковий множник розряду (1)
    
        do
        {
            c = n % 10;    // Отримання останньої цифри числа
            if (c != 1)     // Якщо цифра не дорівнює 1
            {
                m = m + c * d;  // Додаємо цифру до результату з урахуванням розряду
                d = d * 10;     // Збільшуємо множник розряду
            }
            n = n / 10;     // Видалення останньої цифри
        } while (n > 0);    // Повторюємо, доки є цифри
    
        cout << m;         // Виведення результату
        return 0;
    }

    Приклад 4

    Дано натуральне число n. Переверніть число. Наприклад, з числа 3456 одержати 6543.

    Результат роботи програми

    Ввід Вивід
    3456 6543

    Змінні:

    Вхідні:

    Вихідні:

    Проміжні:

    Алгоритм

    Скорочений алгоритм формування з введеного числа n нового числа m такий:

    1. Знаходимо c останню цифру числа n;
    2. Додаємо цю цифру c у кінець нового числа m (для додавання цифри у кінець числа, потрібно число умножити на 10 та додати цифру).
    3. Відкидаємо цифру з числа n.
    4. Все це повторюємо, поки не закінчаться цифри у числі n.

    Щоб визначити формулу, за якою буде обчислюватись m складемо таблицю для нашого прикладу:

    Змінна c m n
    Дія Обчислення останньої цифри Накопичуємо цифру у початок числа Відкидаємо останню цифру
    Початкове значення  0 3456
    1 виток циклу 6 6 345
    2 виток циклу 5 65=6*10+5 34
    3 виток циклу 4 654=65*10+4 3
    Останній виток циклу 3 6543=654*10+3 0
    Формули c=n % 10 m= m*10+c n=n / 10

    Аналізуючи третій стовпчик таблиці можна заповнити комірку, де буде формула для обчислення нового числа m. Ясно що для додавання цифри c у кінець нового числа m потрібно число m умножати на 10 та додавати да нього знайдену цифру с.

    Тепер алгоритм докладніше:

    1. Спочатку потрібно ввести число n.
    2. Нам потрібно сформувати нове число m. Ми будемо його накопичувати, як суму, тому потрібно встановити початкове значення m=0.
    3. У цьому прикладі у відомий нам алгоритм перебору цифр числа, додамо один оператор (обчислення m), який умовно можна назвати „формування перевернутого числа”. Докладніше, у циклі будемо виконувати такі дії:
      1. Оператор c= n % 10 обчислює останню цифру числа.
      2. Оператор m=m*10+c додає знайдену цифру у кінець нового числа.
      3. Оператор n=n / 10 відкидає останню цифру числа.
      4. Перевіряється умова – чи є ще цифри у числі?
        1. Якщо цифри у числі є, то виконується перехід на початок циклу (пункт 3).
        2. Якщо цифр у числі немає, то цикл завершується і виконується перехід на оператор, що іде після циклу (пункт 4).
    4. Коли цикл закінчиться, тобто будуть видалені всі цифри числа n виводимо на екран знайдене нове число.

    Програма

    #include <iostream>
    using namespace std;
    int main()
    {
        long int n, m;  // n - вхідне число, m - обернене число
        int c;          // c - поточна цифра
        cin >> n;      // Введення числа
        m = 0;         // Ініціалізація оберненого числа
    
        do
        {
            c = n % 10;    // Отримання останньої цифри
            m = m * 10 + c; // Додаємо цифру до оберненого числа
            n = n / 10;     // Видаляємо останню цифру
        } while (n > 0);    // Повторюємо, доки є цифри
    
        cout << m;        // Виведення оберненого числа
        return 0;
    }

    Варіанти задач

    1. Дано натуральне число. Змініть у ньому всі цифри a на b.
    2. Дано натуральне число. Вилучить з нього всі цифри a.
    3. Дано натуральне число. З’ясуйте, чи є воно паліндромом (перевернуте число дорівнює введеному).
    4. Дано натуральне число. Припишіть цифру a в початок цього числа.
    5. Дано натуральне число. Припишіть по двійці в початок та кінець цього числа.
    6. Дано натуральне число. Припишіть цифру a в початок та цифру b у кінець цього числа.
    7. Дано натуральне число. Вилучити з нього всі цифри, що співпадають з останньою цифрою.
    8. Дано натуральне число. Вилучити з нього тільки першу цифру.
    9. Дано натуральне число. Вилучити з нього всі входження першої цифри.
    10. Дано натуральне число. Припишіть до нього таке ж саме число.
    11. Дано натуральне число n. Припишіть у кінець цього числа число m.
    12. Дано натуральне число n. Припишіть до нього число m в початок та кінець цього числа.
    13. Дано натуральне число. Вилучити з нього всі входження мінімальної цифри.
    14. Дано натуральне число. Вилучити з нього максимальну цифру. Якщо максимальних цифр декілька (39892), то вилучити останню максимальну(3982).
    15. Дано натуральне число. Сформуйте нове число, в якому перед кожною цифрою 1 вставлена цифра 0 (наприклад, було 3141 стало 301401).
    16. Дано натуральне число. Переставте його першу та останню цифри.
    17. Дано натуральне число. Знайти кількість його різних цифр.

    Назад Зміст Вперед