Переставить цифры числа так, чтобы образовалось наибольшее число

Дано натуральное число N. Нужно переставить его цифры так, чтобы образовалось наибольшее число, записанное теми же цифрами.

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

Натуральное число N.

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

Наибольшее число полученное перестановкой цифр исходного числа.

Код программы

using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        var n = Convert.ToUInt32(Console.ReadLine());
        var d = IntToDigits(n);
        var sortedDigits = d.OrderByDescending(x => x).ToList();
        var result = 0u;
        for (var i = 0; i < sortedDigits.Count(); i++)
        {
            result += sortedDigits[i];
            if (i < sortedDigits.Count() - 1)
            {
                result *= 10;
            }
        }

        Console.WriteLine(result);
    }

    static List<uint> IntToDigits(uint n)
    {
        var digits = new List<uint>();
        while (n > 0)
        {
            var digit = n % 10;
            n /= 10;
            digits.Add(digit);
        }

        digits.Reverse();
        return digits;
    }
}

Смотрите также: