Найти одинаковые цифры двух чисел

Задача

Даны два числа. Определить цифры, входящие в запись как первого так и второго числа.

Решение

В цикле пока одно из чисел полностью не сократится будем выполнять следующее:

  1. Сохраним последнюю цифру первого (a) числа в переменной d.
  2. После этого сразу же удалим эту цифру из числа.
  3. Присвоим переменной c второе введенное число (b). Значение c будем изменять. Значение b должно сохраниться для последующих проверок совпадающих цифр.
  4. Во внутреннем цикле перед удалением последней цифры числа c будем проверять совпадает ли она с цифрой d. Если это так, то выведем ее на экран и прервем внутренний цикл.

Таким образом, каждая цифра первого числа будет сравниваться со всеми цифрами второго числа.

var
    a, b, c: longint;
    d: byte;
begin
    readln(a,b);
    while a > 0 do begin
        d := a mod 10;
        a := a div 10;
        c := b;
        while c > 0 do begin
            if c mod 10 = d then begin
                write(d,' ');
                break;
            end;
            c := c div 10;
        end;
    end;
    writeln;
end.

Пример выполнения кода:

564 8954
4 5

Данная программа имеет следующую особенность. Если в первом числе есть одинаковые цифры, каждая из них будет сравниваться с цифрами второго числа, и два раза найдется совпадение. Пример выполнения с побочным эффектом:

54436 341
3 4 4

Тема

Циклы

Уровень

Сложные задачи

Последняя редакция