Uputstvo
Izdvoj tri cifre i poređaj ih opadajuće (dovoljne su tri zamene). Najveći broj je x·100 + y·10 + z. Za najmanji broj cifre idu rastuće, ali prva cifra ne sme biti 0 – zato posebno proveri nule.
Rešenje (C++)
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n; // trocifren broj, npr. 174
int x = n / 100, y = n / 10 % 10, z = n % 10; // cifre 1, 7, 4
// sortiramo cifre opadajuće: x >= y >= z (tri zamene su dovoljne)
if (x < y) { int t = x; x = y; y = t; }
if (y < z) { int t = y; y = z; z = t; }
if (x < y) { int t = x; x = y; y = t; }
int najveci = x * 100 + y * 10 + z; // 741
// najmanji: cifre rastuće, ali prva cifra ne sme biti 0
int najmanji;
if (z != 0)
najmanji = z * 100 + y * 10 + x; // 147
else if (y != 0)
najmanji = y * 100 + z * 10 + x; // npr. 505 -> 505 (cifre 5,5,0 -> 505)
else
najmanji = x * 100; // dve nule, npr. 500 -> 500
cout << najveci - najmanji << endl;
return 0;
}