Bài toán. Tìm một số nguyên dương k nhỏ nhất sao cho tích các chữ số của k bằng n (k, n là 2 số nguyên dương). Ví dụ:
TIMSO.INP |
TIMSO.OUT |
72 |
89 |
Code tham khảo:
#include <iostream>
using namespace std;
int main() {
freopen("TIMSO.INP","r",stdin);
freopen("TIMSO.OUT","w",stdout);
int n, a = 0;
cin >> n;
for(int i = 9; i > 1; i--) {
while(n % i == 0 && n > 1) {
a = a*10 + i;
n = n/i;
}
}
int b = 0;
while(a > 0)
{
int tmp = a % 10;
b = b * 10 + tmp;
a = a / 10;
}
if(n > 1)
cout << -1;
else
cout << b;
return 0;
}