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

Задачі на перебір цифр натурального числа

Описаний нижче стандартний алгоритм дозволяє виконувати будь-які дії з цифрами натурального числа, в незалежності від значності числа.

Число, після використання цього алгоритму, стає рівним 0! Тому рекомендується зберігати вхідне значення числа у іншій змінній.

Приклад 1

Дано натуральне число n. Визначте у ньому кількість та суму цифр.

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

Ввід Вивід Пояснення
2456 4 17 Кількість цифр 4, а їх сума 17
15 2 6 Кількість цифр 2, а їх сума 6

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку потрібно ввести число оператором read(n).
  2. Нам потрібно знайти суму та кількість. Тому встановимо початкове значення змінним k та s, присвоїмо їм 0.
  3. Згадаємо формулу знаходження останньої цифри числа: c:= n mod 10. Ця формула вірна для числа будь-якої значності.
  4. Згадаємо, що після виконання оператору n:=n div 10, від числа відкидається остання цифра.
  5. На цих двох формулах заснований такий алгоритм: обчислюємо останню цифру числа, робимо з нею потрібні дії (знаходимо кількість, суму, найбільшу цифру, і.т.д), потім цифру відкидаємо. Це робимо, поки у введеному числі не залишиться цифр, тобто число стане 0. Ясно, що для такого алгоритму потрібен цикл із після умовою repeat. Докладніше, у цьому циклі будемо виконувати такі дії:
  6. Коли цикл закінчиться, тобто будуть видалені всі цифри числа n, виводимо на екран знайдені кількість та суму цифр оператором writeln( k,'  ',s).

Блок–схема програми

Програма

 var n:longint; c,s,k:byte;
begin
 read(n);
 k:=0; s:=0;
 repeat
     c:= n mod 10;
     k:=k+1; s:=s+c;
     n:=n div 10;
 until n=0;
 writeln( k,' ',s);
end.

Трасування програми

Проводячи трасування програми, потрібно обов’язково дивитись текст програми!

 
Операторn cskПояснення
read(n)2456    Введення числа
k:=0   0 Встановлення початкового значення k
s:=0  0 Встановлення початкового значення s
c:= n mod 10 6  Початок циклу. Обчислення останньої цифри числа n=2456
k:=k+1   1Збільшення лічильника цифр
s:=s+c  6 Накопичення цифри у суму
n:=n div 10245   Відкидання останньої цифри
until n=0    Перевірка умови. Умова невірна, тому перехід на початок циклу.
c:= n mod 10 5   Початок циклу. Обчислення останньої цифри числа n=245
k:=k+1   2Збільшення лічильника цифр
s:=s+c  11 Накопичення цифри у суму
n:=n div 1024   Відкидання останньої цифри
until n=0    Перевірка умови. Умова невірна, тому перехід на початок циклу.
c:= n mod 10   4   Початок циклу. Обчислення останньої цифри числа n=24
k:=k+1   3Збільшення лічильника цифр
s:=s+c  15 Накопичення цифри у суму
n:=n div 102   Відкидання останньої цифри
until n=0    Перевірка умови. Умова невірна, тому перехід на початок циклу.
c:= n mod 10   2   Початок циклу. Обчислення останньої цифри числа n=2
k:=k+1   4Збільшення лічильника цифр
s:=s+c  17 Накопичення цифри у суму
n:=n div 100   Відкидання останньої цифри
until n=0    Перевірка умови. Умова вірна, тому цикл завершується, і здійснюється перехід на оператор після циклу.
writeln(k,' ',s)      Виведення знайдених значень на екран

Приклад 2

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

Для розв’язання цієї задачі потрібно два перебори числа: перший перебір знаходить першу цифру числа, а другий перебір підраховує, скільки таких цифр у числі.

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

Ввід Вивід Пояснення
5455 3 Перша цифра 5. Таких цифр 3
4 1 Перша цифра 4. Таких цифр 1

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку потрібно ввести число оператором read(n).
  2. Потім потрібно знайти значення першої цифри. Для знаходження першої цифри будемо у циклі відкидати останню цифру у числі, поки не залишиться одна цифра. Цей цикл змінить число n, але значення цього числа нам ще буде потрібно для знаходження кількості. Тому перед циклом значення введеного числа потрібно зберегти у іншу змінну оператором x:=n.
  3. Знайдемо першу цифру числа таким чином: перевіримо, якщо у числі n більше одної цифри, то відкинемо останню. Ясно, що це повинен бути цикл while, бо спочатку перевіряємо умову (чи потрібно відкидати цифру), а потім, якщо потрібно, відкидаємо. Докладніше цикл пошуку першої цифри:
  4. Після завершення циклу запам’ятаємо першу цифру, що залишилась у числі n у змінну c1 оператором c1:=n.
  5. Тепер потрібно знайти у числі кількість цифр, що дорівнюють c1. Для цього встановимо початкове значення лічильника оператором k:=0.
  6. Щоб у числі знайти кількість цифр, що дорівнюють c1, будемо використовувати алгоритм, що описаний у прикладі 1. Але вхідне число n змінилося, тому будемо використовувати його копію у змінній x.
  7. Тобто у циклі будемо виконувати такі дії:
  8. Коли цикл закінчиться, тобто будуть видалені всі цифри числа x, виводимо на екран знайдену кількість оператором writeln(k).

Програма

 var n, x:longint; c,c1,k:byte;
begin
 read(n); x:=n;
 while n>9 do
   n:=n div 10;
 c1:=n;
 k:=0;
 repeat
    c:= x mod 10;
    if c=c1 then k:=k+1;
    x:=x div 10;
 until x=0;
 writeln(k);
end.

Приклад 3

Дано натуральне число n. Знайдіть максимальну цифру. Якщо максимальних цифр декілька, то визначте порядковий номер першої з них, якщо цифри рахувати зліва направо.

Для розв’язання цієї задачі потрібно використовувати два алгоритми: перший – перебір цифр числа, а другий – знаходження найбільшої цифри.

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

Ввід Вивід Пояснення
4525 5 2 Найбільша цифра 5. Таких цифр 2.
Якщо рахувати цифри зліва направо, то перша з них має порядковий номер 2.

Змінні:

Вхідні:

Вихідні:

Проміжні:

Алгоритм

  1. Спочатку потрібно ввести число оператором read(n).
  2. Встановимо початкове значення лічильника цифр оператором k:=0.
  3. Для знаходження найбільшого або найменшого, потрібно встановити початкове значення змінній, в який це значення буде зберігатися. Для знаходження найбільшого, початкове значення повинно бути найменшим з можливих (для цифр 0), а для знаходження найменшого, початкове значення повинно бути найбільшим з можливих (для цифр 9). Для знаходження найбільшої цифри, встановимо початкове значення найменше можливе, тобто 0, оператором max:=0.
  4. У циклі, що перебирає цифри, будемо виконувати такі дії:
  5. Коли цикл закінчиться, у змінній max буде значення найбільшої цифри, а у змінній nmax її порядковий номер, якщо рахувати цифри у числі справа наліво. Але нам потрібно знайти порядковий номер найбільшої цифри, якщо цифри рахуються зліва направо. Для цього роздивимось приклад:
    3 6 2 1 7 Число
    5 4 3 2 1 Порядковий номер цифри, якщо рахувати цифри у числі справа наліво (справа)
    1 2 3 4 5 Порядковий номер цифри, якщо рахувати цифри у числі зліва направо (зліва)

    Помітимо, що у числі п’ять цифр і сума порядкових номерів кожної цифри, якщо рахувати справа наліво та зліва направо дорівнює 6. Тому:

    (зліва) + (справа) = (кількість цифр у числі) + 1, звідси

    (зліва) = (кількість цифр у числі) + 1 – (справа).

    Якщо для порядкового номера найбільшої цифри при рахуванні справа та зліва використовувати одну і ту ж змінну nmax, то порядковий номер максимальної цифри, якщо рахувати зліва направо буде nmax:=k+1-nmax.

  6. Потім виводимо на екран знайдені значення оператором writeln(max,'  ',nmax).

Програма

 var n:longint; c,max,nmax,k:byte;
begin
 read(n); max:=0;k:=0;
 repeat
    c:= n mod 10;
    k:=k+1;
    if c>=max then
      begin max:=c; nmax:=k; end;
    n:=n div 10;
 until n=0;
 nmax:=k+1-nmax;
 writeln(max,' ',nmax);
end.

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

  1. Дано натуральне число n. Знайдіть кількість цифр 5.
  2. Дано натуральне число n. Знайдіть суму квадратів його цифр.
  3. Дано натуральне число n. Знайдіть середнє арифметичне його цифр.
  4. Дано натуральне число n. Знайдіть добуток його цифр.
  5. Дано натуральне число. Знайти його першу цифру.
  6. Дано натуральне число n. Знайдіть суму його першої та останньої цифр.
  7. Дано натуральне число. Знайти його другу (спочатку) цифру.
  8. Дано натуральне число. Чи є в ньому цифра 3?
  9. Дано натуральне число. З’ясуйте, скільки разів у ньому зустрічається остання цифра.
  10. Дано натуральне число n. З’ясуйте, скільки разів у ньому зустрічається цифра A.
  11. Дано натуральне число n. Чи вірно, що сума його цифр більша за D?
  12. Дано натуральне число n. Чи вірно, що добуток його цифр більше за B?
  13. Дано натуральне число n. Чи є в ньому цифра A?
  14. Дано натуральне число. Чи вірно, що воно починається та закінчується однаковими цифрами?
  15. Дано натуральне число. З’ясуйте, чи є різниця між його максимальною та мінімальною цифрами парним числом.
  16. Дано натуральної число. З’ясуйте, яка цифра розташована у ньому лівіше: максимальна чи мінімальна.
  17. Дано натуральне число. З’ясуйте, скільки разів у ньому зустрічається максимальна цифра.

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