Даны два
целых числа. Вывести наибольшее число, которое можно составить из их цифр.
Например,
из цифр чисел 345 и 6090737 можно составить наибольшее число 9776543300.
Вход. В одной
строке заданы два числа a и b (1 ≤ a, b ≤ 109).
Выход. Вывести
наибольшее число, которое можно составить из цифр чисел a и b.
Пример входа |
Пример выхода |
345 6090737 |
9776543300 |
сортировка
Прочитаем оба
числа в символьный массив, таким образом склеив их. Отсортируем цифры по
убыванию, получим наибольшее число.
Числа
также можно прочитать в две строки, после чего конкатенировать их. Далее сортируем
цифры по убыванию.
Реализация алгоритма
Входное
число читаем в символьный массив s.
char s[20];
Считываем
входные числа в символьный массив, располагая их друг за другом.
scanf("%s ",s);
scanf("%s",s+strlen(s));
Сортируем
цифры по убыванию.
sort(s,s+strlen(s),greater<char>());
Извлекаем
из строки 64-битовое целое число в переменную a и выводим ее.
sscanf(s,"%lld",&a);
printf("%lld\n",a);
Реализация алгоритма – iostream + string
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
using namespace
std;
string s, p, q;
int main(void)
{
cin >> s
>> p;
q = s + p;
sort(q.begin(),q.end(),greater<char>());
cout << q
<< endl;
return 0;
}
Java реализация
import
java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new
Scanner(System.in);
String s[] = (con.next() + con.next()).split("");
Arrays.sort(s,Collections.reverseOrder());
long res = Long.parseLong(String.join("", s));
System.out.println(res);
con.close();
}
}
Python реализация
a, b = input().split()
c = list(a + b)
c.sort(reverse = True)
print(''.join(c))