Подразделы

Другие разделы

Дата и время

29/04/2024 08:54:56

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

print6. Неправильное сложение

Задача средней сложности на перебор, технику программирования.
Для описанного в задаче способа сложения выполняется свойство коммутативности, поэтому достаточно рассмотреть три варианта сложения трех чисел: `(a+b)+c`, `(a+c)+b` и `(b+c)+a`. Полученные три результата сортируем по возрастанию (для сравнения чисел, хранящихся в string, можно использовать выражение (length(s1)>length(s2)) or (length(s1)=length(s2)) and (s1>s2)), выбрасываем одинаковые результаты. Если остался один результат, выводим "NO", иначе "YES". Функцию для сложения двух чисел можно определить так:
function sum(s1,s2:string):string;
var r:string;
  i,p:integer;
begin
  {выравниваем числа по длине }
  while length(s1)<length(s2) do s1:='0'+s1;
  while length(s1)>length(s2) do s2:='0'+s2;
  { складываем }
  r:='';
  for i:=length(s1) downto 1 do
  begin
    p:=ord(s1[i])+ord(s2[i])-2*ord('0');
    r:=chr(p mod 10+ord('0'))+r;
    if p>=10 then
      r:='1'+r; 
  end;
  sum:=r;
end;
loading