В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык
mgvzvit2005
mgvzvit2005
19.08.2022 23:25 •  Информатика

На вход программе поступает натуральное число не превышающее 10^30 требуется написать программу, которая, используя все цифры этого числа, формирует новое натуральное число, причем самое маленькое из всех возможных той же разрядности. на любом языке (лучше конечно на c++ либо pascal abc)

Ответ:
mynee
mynee
27.08.2020 09:21

Посчитаем количество раз, когда встречается каждая цифра в исходном числе. Тогда ответ – либо все цифры, расположенные в порядке возрастания (если в исходном числе не было нулей), либо сначала одна наименьшая цифра, потом все нули, потом все остальные цифры в порядке возрастания.

С++:

#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

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?