Задачи на целые числа без использования цикла
Дано
трехзначное положительное число. Переставить цифры этого числа так, чтобы
получилось максимальное число, записанное этими же цифрами.
Для
того, чтобы получить максимальное число, надо цифры числа расположить в порядке
не убывания. Например: максимальным числом из цифр числа 539 будет 953, из 377
будет 773, из 615 будет 651. Поэтому алгоритм будет следующим:
1. Выделяем
все цифры- a – число единиц, b
– число десятков, c
–
число сотен.
2.
Если b больше
a и больше c меняем
значения a и b, то
есть a
становится самым большим, иначе если c
больше a и больше b меняем
значения a и c , то
есть и в этом случае a становится самым большим.
3.
Теперь сравниваем b
и c. Если
b
<
c, то
меняем значения b
и c.
После этих действий у нас
получится: a<=
b<=
c и теперь сформируем
требуемое трехзначное число M:=100*a+10*b+c;
Program A1_13;
Var
N,M,a,b,c,r:integer;
begin
readln(N);
a:=n mod 10;
b:=(n div 10) mod 10;
c:=(n div 100) mod 10;
if (b>a) and (b>c) then
begin r:=a; a:=b; b:=r; end
else
if (c>a) and (c>b) then
begin r:=a; a:=c; c:=r; end;
if (b<c) then
begin r:=b; b:=c; c:=r; end;
M:=100*a+10*b+c;
writeln(M);
readln;
end.
|
//Program A1.13
#include
<iostream>
using
namespace std;
int main()
{int
n,m,a,b,c,r;
cin>>n;
m=0;
a=n%10;
b=(n/10)%10;
c=(n/100)%10;
if(b>a && b>c){r=a; a=b;
b=r;}
else
if(c>a && c>b) {r=a; a=c;
c=r;}
if(b<c){r=b; b=c; c=r;}
m=100*a+10*b+c;
cout<<m<<endl;
return 0;
}
|
|