print2349. Ошибка копирования

printОшибка копирования

Ограничения: время – 200ms/500ms, память – 128MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0) idea

При копировании условия задачи из браузера в текстовый редактор в некоторых числах может исчезнуть верхний индекс для показателя степени. Например, `10^9` может превратиться в 109. Петя пытается решить задачу, но не зная исходных ограничений, предполагает, что верхний индекс в последовательности цифр установлен так, чтобы число было максимальным из возможных.
Ввод содержит последовательность из трех цифр от 100 до 999 без пробелов.
Вывести те же цифры, при этом возможно добавив символ ^ между основанием и показателем степени так, чтобы получилось максимальное из возможных число.

Пример ввода 1

100

Пример вывода 1

100

Пример ввода 2

999

Пример вывода 2

9^99
Пояснение к примеру 2: среди вариантов 999, `99^9`, `9^{99}` наибольшим числом является `9^{99}`.

printРазбор задачи A. Ошибка копирования

Возможны 3 варианта разбиения числа на основание и показатель степени. Находим максимальный из них. Для упрощения кода можно использовать тип pair для хранения значения и его представления в виде строки, а после нахождения максимума среди трех пар – вывести второй элемент пары.
pair<double,string> mp(int o,int p){
   return make_pair(pow(double(o),p),to_string(o)+"^"+to_string(p));
}
int main()
{  int n;
   cin>>n;
   cout<<max({make_pair(double(n),to_string(n)),
        mp(n/10,n%10),mp(n/100,n%100)}).second<<"\n";
}
loading