вторник, 26 января 2016 г.

Решение олимпиадного задания № 3 из муниципального этапа

1.   Двойная бухгалтерия (truebook)  (100 баллов)

Один нечестный бухгалтер, пользуясь благодушием директора и привычкой подписывать документы не глядя, начал в ведомости исправлять свою зарплату, переставляя в ней цифры так, чтобы она становилась максимальной. Когда всё выяснилось, и бухгалтера с позором выгнали, директор попытался определить, на какую сумму бухгалтер его обманывал. Но бухгалтер уничтожил исправленную ведомость, оставив только настоящую. Помогите директору, зная размер настоящей зарплаты бухгалтера, определить, какую сумму тот в реальности получал.

Входные данные

Одно целое неотрицательное число S ≤ 109 – сумма, которую должен был получать бухгалтер

Выходные данные

Одно число R – сумма, которую он в реальности получал.

Примеры


Ввод (truebook.in)
Вывод (truebook.out)
1
56701
76510
2
55000
55000
3
12000
21000



program ideone;
var
  x : longint;
  dig : array [1..20] of integer;
  n : integer;
  i, j, tmp : integer;
begin
writeln('Задайте число x');
readln(x);
if x = 0 then begin
 writeln(0);
 exit;
end;
n := 0;
while x > 0 do begin
 dig[n+1] := x mod 10;
 x := x div 10;
 n := n + 1;
end;
{for i := 1 to n do write(dig[i]); writeln;}
for i := 1 to n-1 do begin
 for j := i + 1 to n do begin
   if dig[j] > dig[i] then begin
     tmp := dig[i]; dig[i] := dig[j]; dig[j] := tmp; 
   end;
 end;
end;
writeln('Вывод результата');
for i := 1 to n do write(dig[i]);
writeln;
end.

Комментариев нет:

Отправить комментарий