Решения задач acmp.ru
Главная
Вход
Регистрация
Четверг, 01.10.2020, 04:57Приветствую Вас Гость | RSS
Меню сайта

Категории раздела
Pascal [121]
C++ [76]

Поиск

Мини-чат
200

Легкий заработок!

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Файлы » Pascal

0346 Сумма двух чисел

Скачать файл можно после просмотра рекламы:

04.06.2012, 18:26
type Pere=array [byte] of byte;
var N,i,j : byte;
X : Pere;
Yes, Y : boolean;
a, b, c, ao : longint;
aa, bb : array [0..9] of byte;
procedure Next(var X:Pere;var Yes:boolean);
var i:byte;
procedure Swap(var a,b:byte);
var c:byte;
begin c:=a;a:=b;b:=c end;
begin
i:=N-1;
while (i>0)and(X[i]>=X[i+1]) do dec(i);
if i>0 then
begin
j:=i+1;
while (j<N)and(X[j+1]>X[i]) do inc(j);
Swap(X[i],X[j]);
for j:=i+1 to (N+i) div 2 do Swap(X[j],X[N-j+i+1]);
Yes:=true
end
else Yes:=false
end;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
read(a,b,c); n:=0;
while a>0 do begin n:=n+1; x[n]:=a mod 10; a:=a div 10 end;
for i:=0 to 9 do bb[i]:=0;
while b>0 do begin i:=b mod 10; bb[i]:=bb[i]+1; b:=b div 10 end;
for i:=1 to n-1 do
for j:=1 to n-i do
if x[j]>x[j+1] then
begin a:=x[j]; x[j]:=x[j+1]; x[j+1]:=a end;
repeat
a:=0; for i:=1 to n do a:=a*10+x[i];
ao:=a;
a:=c-a;
if a>0 then
begin
for i:=0 to 9 do aa[i]:=0;
while a>0 do begin i:=a mod 10; aa[i]:=aa[i]+1; a:=a div 10 end;
Y:=true;
278
for i:=0 to 9 do Y:=Y and (aa[i]=bb[i]);
end;
Next(X,Yes)
until not Yes or Y;
if Y then begin writeln('YES'); write(ao,' ',c-ao) end else write('NO')
end.
Категория: Pascal | Добавил: shum
Просмотров: 2234 | Загрузок: 0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Это интересно!


Copyright MyCorp © 2020