На вход программе поступает натуральное число не превышающее 10^30 требуется написать программу, которая, используя все цифры этого числа, формирует новое натуральное число, причем самое маленькое из всех возможных той же разрядности. на любом языке (лучше конечно на c++ либо pascal abc)
Ответы на вопрос:
посчитаем количество раз, когда встречается каждая цифра в исходном числе. тогда ответ – либо все цифры, расположенные в порядке возрастания (если в исходном числе не было нулей), либо сначала одна наименьшая цифра, потом все нули, потом все остальные цифры в порядке возрастания.
с++:
#include < iostream>
int main() {
int count[10];
char digit;
for (digit = 0; digit < 10; digit++) {
count[digit] = 0;
}
while (std: : cin.get(digit)) {
digit -= '0';
if ((digit < 0) || (digit > 9)) {
break;
}
count[digit]++;
}
digit = 1;
while (count[digit] == 0) {
digit++;
}
std: : cout < < int(digit);
count[digit]--;
for (digit = 0; digit < 10; digit++) {
for (int i = 0; i < count[digit]; i++) {
std: : cout < < int(digit);
}
}
return 0;
}
пример ввода: 11111111112345678098765422
пример вывода: 10111111111222344556677889
Популярно: Информатика
-
daha505daha50517.01.2020 03:32
-
РусикЛох25.04.2021 22:09
-
Милаякрасавица30.11.2020 22:50
-
илюхв06.06.2023 07:29
-
evakuleva15.01.2021 02:09
-
Дашенька136504.11.2020 11:01
-
nazarovradion25.01.2020 04:57
-
вселенная1309.06.2022 18:38
-
Arturiomajarbio07.09.2021 04:16
-
Tuchka08705.01.2021 01:03