Найти наименьшее и наибольшее натуральные числа, произведение цифр в которых равно заданному натуральному числу M или вывести -1 -1, если таких не существует. Для записи искомых чисел нельзя использовать цифры 0 і 1.
Во входном файле целое число M (2≤ M ≤ 103).
В выходной файл необходимо записать два целых числа в неубывающем порядке.
Входные данные
12
Выходные данные
26 322
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n, tmp, A = 0, B = 0; cin >> n;
tmp = n;
string a, b;
for (int i = 2; i < 10; i++)
while (tmp % i == 0)
{
a += i + 48;
tmp /= i;
}
tmp = n;
for (int i = 9; i > 1; i--)
while (tmp % i == 0)
{
b += i + 48;
tmp /= i;
}
if (tmp != 1) cout << -1 << " " << -1 << endl;
else
{
for (int i = a.length() - 1; i >= 0; i--) A = A * 10 + a[i] - 48;
for (int i = b.length() - 1; i >= 0; i--) B = B * 10 + b[i] - 48;
cout << min(A, B) << " " << max(A, B) << endl;
}
}
Есть решение которого нет на сайте? Пиши admin@devexe.top