fork(2) download
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int main() {
  6. long long x, K = 0, xm = 0, xM = 0;
  7. //Вводимое число, искомое число, максимальное и минимальное из комбинации цифр
  8. cin >> x;
  9. int N[11];
  10. int n = 0;
  11.  
  12. while(x != 0){//Количество цифр в числе, запись их в массив цифр
  13. N[n] = abs(x % 10);
  14. n++;
  15. x /= 10;
  16. }
  17.  
  18. bool t = true;
  19.  
  20. sort(N , N+n);//Сортировка цифр по возрастанию
  21.  
  22. long long ten = 1;
  23.  
  24. for(int j = 0; j < n-1; j++){
  25. ten *= 10;
  26. }
  27.  
  28. long long ten_copy = ten;
  29.  
  30. for(int i = 0; i < n; i++){//Преобразование цифр в наименьшее число
  31. xm += N[i] * ten;
  32. ten /= 10;
  33. }
  34.  
  35. for(int i = n-1; i >= 0; i--){//Преобразование цифр в наибольшее число
  36. xM += N[i] * ten_copy;
  37. ten_copy /= 10;
  38. }
  39.  
  40. K = xM - xm;
  41. int c = 0;
  42.  
  43. long long K_tmp = K;
  44. //Проверка на равенство количества цифр исходного числа и числа K
  45. while(K_tmp != 0){
  46. c++;
  47. K_tmp /= 10;
  48. }
  49.  
  50. //Добавление недостающих ведущих нулей
  51. for(int i = 0; i < n-c; i++) cout << 0;
  52.  
  53. if(K!=0)//Если K==0, то нули были выведены предыдущим циклом
  54. cout << K;//Вывод числа K
  55.  
  56. return 0;
  57. }
Success #stdin #stdout 0s 15240KB
stdin
2414
stdout
3177