В данном натуральном числе переставить цифры таким образом, чтобы образовалось наименьшее число, записанное этими же цифрами.
Язык С++.
Другие языки программирования и технологии
Дано число. Переставить цифры так чтобы образовалось наименьшее.
> может кому пригодиться
Может и тебе пригодится:
#include <iostream>
using namespace std;
int main() {
int n;
cout << "n? ";
cin >> n;
int d[10] = { 0 };
do {
d[n % 10]++;
n /= 10;
} while (n != 0);
if (d[0] != 0) {
for (int c = 1; c < 10 && n == 0; ++c) {
if (d[c] != 0) {
d[c]--;
n = c;
}
}
}
for (int c = 0; c < 10; ++c) {
while (d[c] != 0) {
n *= 10;
n += c;
d[c]--;
}
}
cout << "result: " << n << endl;
return 0;
}
Или:
#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cout << "n? ";
cin >> n;
stringstream ss;
ss << n;
string s;
ss >> s;
sort(s.begin(), s.end());
string::iterator i = s.begin();
for (; i != s.end() && *i == '0'; ++i) ;
if ( i != s.end() ) iter_swap(s.begin(), i);
ss.clear();
ss.str(s);
ss >> n;
cout << "result: " << n << endl;
return 0;
}
ЗЫ: код лучше копировать на сайт pastebin.com, здесь он корежится и пропадает. Вместо функций из cstdlib лучше использовать аналогичные функции из algorithm
Может и тебе пригодится:
#include <iostream>
using namespace std;
int main() {
int n;
cout << "n? ";
cin >> n;
int d[10] = { 0 };
do {
d[n % 10]++;
n /= 10;
} while (n != 0);
if (d[0] != 0) {
for (int c = 1; c < 10 && n == 0; ++c) {
if (d[c] != 0) {
d[c]--;
n = c;
}
}
}
for (int c = 0; c < 10; ++c) {
while (d[c] != 0) {
n *= 10;
n += c;
d[c]--;
}
}
cout << "result: " << n << endl;
return 0;
}
Или:
#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cout << "n? ";
cin >> n;
stringstream ss;
ss << n;
string s;
ss >> s;
sort(s.begin(), s.end());
string::iterator i = s.begin();
for (; i != s.end() && *i == '0'; ++i) ;
if ( i != s.end() ) iter_swap(s.begin(), i);
ss.clear();
ss.str(s);
ss >> n;
cout << "result: " << n << endl;
return 0;
}
ЗЫ: код лучше копировать на сайт pastebin.com, здесь он корежится и пропадает. Вместо функций из cstdlib лучше использовать аналогичные функции из algorithm
Загони разряды в массив, отсортируй, собери число заново.
Очевидно, надо разбить на разряды, отсортировать во возрастанию и собрать эти разряды обратно.
Пишите на почту или в асю 586178755 решу все в кратчайшие сроки)
Похожие вопросы
- паскаль - Дано натуральное число п. Переставить его цифры так, чтобы образовалось наименьшее число
- дано натуральное 5 значное число n.Сколько раз в данном числе встречаются цифры 4 или 8?
- Найти сумму чисел, заканчивающихся цифрой 4, наибольшее из таких чисел, и номер этого числа в последовательности.
- Подсчитать количество 3-значных чисел,сумма цифр которых меньше либо равна 24
- Дано число типа longint определить количество цифр в этом числе. Очень срочно!
- Как в C++ разбить число на цифры и вывести их через пробел? Решение задачи реализовать с помощью конструкции switch.
- Перебрать все числа с цифрами 1 и 2 до n-ного количества цифр.
- Заповнити масив різними числами Армстронга. Числом Армстронга називають натуральне n-цифрове число, сума цифр якого, під
- Как можно решить такое задание : " Ввести из клавиатуры шестизначное число, определить цифры, которые находится рядом
- дано число н с диапазоном от 0 до 1023! напис. прогу плиииз!