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

0 голосов
63 просмотров

Дано натуральное число
n
. Необходимо переставить его цифры таким образом, чтобы получилось минимальное возможное число без ведущих нулей.

СДЕЛАТЬ В С++ с использованием примитивного языка


Информатика (12 баллов) | 63 просмотров
Дан 1 ответ
0 голосов

#include using namespace std;
//Функция возвращает минимальное возможное число,//Состоящее из цифр числа aint min(int a) {//Массив для подсчета цифр в числеint *k = new int[10];for (int i = 0; i < 10; i++) k[i] = 0;
//Считаем, сколько раз повторяется каждая цифра в числеfor (; a; a /= 10) { int t = a % 10; //Если цифра не 0 if (t) k[t]++; }
//Переменная для результатаint rez = 0;//Множиель разрядаint multiplier = 10;
//Идем по массиву в обратном порядкеfor (int i = 9; i > 0; i--) //Если данная цифра есть в массиве (числе) for (; k[i]; k[i]--) { //Дописываем цифру в результат rez += i * multiplier * 0.1; //Увеличиваем множитель, для перехода к следующему разряду multiplier *= 10; } //Удаление массиваdelete[] k;return rez;}

void main(){//Входные данныеint n;printf("\n << n = ");scanf("%d",&n);<br> //Вывод результатаprintf("\n >> min = %d", min(n));
system("pause>>void");}

(2.6k баллов)