2325. Два числа

 

Даны два целых числа. Вывести наибольшее число, которое можно составить из их цифр.

Например, из цифр чисел 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))