М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
sofia121324oyztor
sofia121324oyztor
24.02.2023 23:22 •  Информатика

Рюмка+рюмка=авария решить при программы на паскале

👇
Ответ:
Маха1437
Маха1437
24.02.2023
Задачу решается вот таким жутким перебором (который, если немного подумать можно ещё сократить):
//Рюмка+рюмка=авария
var a,b,c,d,e,f,g,h:integer;
begin
for a:=1 to 9 do  //р
 for b:=0 to 9 do  //ю
  if (b<>a) then
   for c:=0 to 9 do  //м
    if (c<>a)and(c<>b) then
     for d:=0 to 9 do  //к
      if (d<>a)and(d<>b)and(d<>c) then
       for e:=1 to 1 do  //а
        if (e<>a)and(e<>b)and(e<>c)and(e<>d) then
         for f:=0 to 9 do //в
          if (f<>a)and(f<>b)and(f<>c)and(f<>d)and(f<>e)then
           for g:=0 to 9 do  //и
            if (g<>a)and(g<>b)and(g<>c)and(g<>d)and(g<>e)and(g<>f)then
             for h:=2 to 2 do  //я
              if (h<>a)and(h<>b)and(h<>c)and(h<>d)and(h<>e)and(h<>f)and(h<>g)then
               if 2*(a*10000+b*1000+c*100+d*10+e)=e*100000+f*10000+e*1000+a*100+g*10+h then
                writeln(a*10000+b*1000+c*100+d*10+e,' ',e*100000+f*10000+e*1000+a*100+g*10+h);
end.

Результат:
85931 171862
4,6(31 оценок)
Открыть все ответы
Ответ:
KaRaIcHiTaN
KaRaIcHiTaN
24.02.2023
Var x,y,n,z,h,C:real;function arccos(x : real) : real;beginarccos := 2 * arctan(sqrt((1 - x) / (1 + x)));end;procedure ygls( a,b,c,t: real);var al,be,ga: real;beginal := arccos((sqr(b) + sqr(c) - sqr(a))/(2 * b * c)) * 180 / pi;writeln('угол A= ',trunc(al));writeln('угол B= ',trunc(180-al-t));end;beginwrite('введите сторону а: ');readln(x);write('введите сторону b: ');readln(y);write('введите угол С: ');readln(C);n:=C;C:=cos(C*180/pi);z:=sqrt(x*x+y*y-2*x*y*C);h:=0.5*sqrt(2*(x*x+y*y)-c*c);ygls(x,y,z,n);writeln('сторона c: ',trunc(z));writeln('высота h: ',trunc(h));writeln('периметр P: ',trunc(x+y+z));writeln('площадь S: ',trunc(z*h));end.
4,4(31 оценок)
Ответ:
uychuuus
uychuuus
24.02.2023
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
4,6(90 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ