Порозрядне порівняння чисел

Дано два п'ятизначних числа, необхідно знайти кількість збігів по дві однакові цифри в рівносильних розрядах чисел, а так само кількість збігів по дві однакові цифри в різних розрядах цих чисел. Цифра, яка вже брала участь в одній парі збіги, не враховується повторно. Наприклад, дані числа 12345 і 27376. Кількість збігів однакових цифр в еквівалентному розряді дорівнює 1 (це цифра 3), кількість збігів однакових цифр в різних розрядах дорівнює 1 (це цифра 2).

a. b - задані числа;
a_arr. b_arr - масиви цифр, з яких складаються числа;
a_dig. b_dig - масиви для зберігання інформації про збіглися цифрах.

Алгоритм рішення задачі:

Числа розкладаються на цифри, які розміщуються в масивах. Знаходження залишку по підставі 10 дає молодший розряд числа. При цьому самі числа поступово зменшуються, позбавляючись від поточних молодших розрядів (div 10). Оскільки витяг цифр відбувається з кінця, масиви, куди вони заносяться, "прокручуються" з кінця: спочатку заповнюються п'яті елементи масиву, потім четверні і т.д.

Для того, щоб знайти однакові цифри в рівносильних розрядах, досить порівняти елементи масивів, що знаходяться в однакових позиціях двох масивів. При цьому треба десь зберегти інформацію про розрядах, цифри яких збіглися. Введемо два додаткових масиву (a_dig і b_dig). Спочатку в мові програмування Pascal масиви заповнені нулями. Нехай елементи цих масивів відповідають розрядам чисел. Якщо цифра числа знайшла собі пару серед такого ж розряду другого числа, то до відповідних розрядів осередку масивів записуються одиниці.

Беремо черговий елемент масиву першого числа. Якщо відповідний йому елемент з масиву a_dig дорівнює нулю (що означає, збігів не було), то порівнюємо його з усіма елементами другого масиву числа, які також не знайшли собі пару. Якщо при переборі збіг знаходиться, то у відповідні комірки масивів a_dig і b_dig поміщаються цифри 2.

Кількість однакових цифр в рівносильних розрядах дорівнює кількості одиниць в масиві a_dig.

Кількість однакових цифр в різних розрядах дорівнює кількості двійок в масиві a_dig.

Масив b_dig містить тугіше інформацію про кількість одиниць і двійок. Однак двійки знаходяться в інших елементах масиву.

Програма на мові Паскаль:

Схожі статті