Даны два натуральных числа m и n. Проверить, есть ли в записи числа m цифры, одинаковые с...

0 голосов
215 просмотров

Даны два натуральных числа m и n. Проверить, есть ли в записи числа m цифры, одинаковые с цифрами в записи числа n.

P.S. На языке паскаль.


Информатика (67 баллов) | 215 просмотров
0

Т.е. если есть хоть одна одинаковая, вывести "есть"? Или какое-то иное оформление результатов?

0

да

0

первое

Дано ответов: 2
0 голосов
Правильный ответ

//Pascal ABC.NET v3.0 сборка 1111

Var
 a,b,i,j:integer;
begin
 read(a,b);
 for i:=1 to length(inttostr(a)) do
  for j:=1 to length(inttostr(b)) do
  if inttostr(a)[i]=inttostr(b)[j] then
   begin;
    writeln('Есть');
    exit;
   end;
 writeln('Нет');
end.

Пример ввода:
123
345
Пример вывода:
Есть

(38.6k баллов)
0 голосов

// PascalABC.NET 3.1, сборка 1172 от 19.02.2016
begin
  var m:=ReadInteger('m=').ToString.ToSortedSet;
  var n:=ReadInteger('n=').ToString.ToSortedSet;
  if m.Intersect(n).Count>0 then Writeln('Есть одинаковые цифры')
  else Writeln('Нет одинаковых цифр')
end.

Тестовые решения:
m= 12345
n= 76840
Есть одинаковые цифры

m= 123456
n= 789087
Нет одинаковых цифр

А вот примерно так почему-то заставляют писать эту же задачу в школах:

// PascalABC.NET 3.1, сборка 1172 от 19.02.2016
var
  i,m,n:integer;
  found:boolean;
  sm,sn:string;
begin
  Writeln('Введите через пробел два натуральных числа: ');
  Read(m,n);
  Str(m,sm);
  Str(n,sn);
  found:=False;
  for i:=1 to Length(sm) do
    if Pos(sm[i],sn)>0 then begin
      found:=True;
      break
      end;
  if found then Writeln('Есть одинаковые цифры')
  else Writeln('Нет одинаковых цифр')
end.

Тестовое решение:
Введите через пробел два натуральных числа:
5354353 111211
Нет одинаковых цифр


(142k баллов)