PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
function Duplicates(a,b:int64):array of char; begin var ha:=a.ToString.ToHashSet; ha.IntersectWith(b.ToString.ToHashSet); Result:=ha.ToArray end;
begin var m,n:int64; Write('Введите через пробел два натуральных числа: '); Read(m,n); var r:=Duplicates(m,n); if r.Length=0 then Writeln('Нет цифр, встречающихся в обоих числах') else r.Println(',') end.
Примеры Введите через пробел два натуральных числа: 12345 6789067 Нет цифр, встречающихся в обоих числах
Введите через пробел два натуральных числа: 1342103 6748644 4
Реализация без множеств
procedure nToArray(n:int64; a:array of boolean); begin for var i:=0 to 9 do a[i]:=False; if n=0 then a[0]:=True else while n>0 do begin a[n mod 10]:=True; n:=n div 10 end end;
function Duplicates(a,b:int64):array of boolean; begin var ma:=new boolean[10]; var mb:=new boolean[10]; nToArray(a,ma); nToArray(b,mb); Result:=new boolean[10]; for var i:=0 to 9 do Result[i]:=ma[i] and mb[i] end;
begin var m,n:int64; Write('Введите через пробел два натуральных числа: '); Read(m,n); var r:=Duplicates(m,n); Write('Совпадающие цифры: '); for var i:=0 to 9 do if r[i] then Write(i,' '); Writeln end.
Пример Введите через пробел два натуральных числа: 12352423 98789635233 Совпадающие цифры: 2 3 5
a = [] with open('input.txt', 'r') as f: n = int(f.readline()) for i in range(n): inp = f.readline() x, y = list(map(int, inp.split())) a.append((x, y))
k = 0 for i in range(n - 1): for j in range(i + 1, n): if (a[i][0] == a[j][0]) or (a[i][0] == a[j][1]) or (a[i][1] == a[j][0]) or (a[i][1] == a[j][1]): k += 1 with open('output.txt, w') as f: f.write(k) https://pastebin.com/sHe7sFyc - тут все отформатировано красиво(просто на знаниях неудобно вставлять код)
Внимание! Если программа не работает, обновите версию!
function Duplicates(a,b:int64):array of char;
begin
var ha:=a.ToString.ToHashSet;
ha.IntersectWith(b.ToString.ToHashSet);
Result:=ha.ToArray
end;
begin
var m,n:int64;
Write('Введите через пробел два натуральных числа: ');
Read(m,n);
var r:=Duplicates(m,n);
if r.Length=0 then Writeln('Нет цифр, встречающихся в обоих числах')
else r.Println(',')
end.
Примеры
Введите через пробел два натуральных числа: 12345 6789067
Нет цифр, встречающихся в обоих числах
Введите через пробел два натуральных числа: 1342103 6748644
4
Реализация без множеств
procedure nToArray(n:int64; a:array of boolean);
begin
for var i:=0 to 9 do a[i]:=False;
if n=0 then a[0]:=True
else
while n>0 do begin
a[n mod 10]:=True;
n:=n div 10
end
end;
function Duplicates(a,b:int64):array of boolean;
begin
var ma:=new boolean[10];
var mb:=new boolean[10];
nToArray(a,ma);
nToArray(b,mb);
Result:=new boolean[10];
for var i:=0 to 9 do
Result[i]:=ma[i] and mb[i]
end;
begin
var m,n:int64;
Write('Введите через пробел два натуральных числа: ');
Read(m,n);
var r:=Duplicates(m,n);
Write('Совпадающие цифры: ');
for var i:=0 to 9 do
if r[i] then Write(i,' ');
Writeln
end.
Пример
Введите через пробел два натуральных числа: 12352423 98789635233
Совпадающие цифры: 2 3 5
with open('input.txt', 'r') as f:
n = int(f.readline())
for i in range(n):
inp = f.readline()
x, y = list(map(int, inp.split()))
a.append((x, y))
k = 0
for i in range(n - 1):
for j in range(i + 1, n):
if (a[i][0] == a[j][0]) or (a[i][0] == a[j][1]) or (a[i][1] == a[j][0]) or (a[i][1] == a[j][1]): k += 1
with open('output.txt, w') as f:
f.write(k)
https://pastebin.com/sHe7sFyc - тут все отформатировано красиво(просто на знаниях неудобно вставлять код)