给出整数N(0 ≤ N ≤ 10^9),找出一个最小的整数Q,使得将Q的每一位相乘之后等于N
例如N=18,则Q可能取值为:29(2×9=18),36(3×6=18),63(6×3=18),92(9×2=18)
那么我们只要取最小值29即为结果
输入:整数N(0 ≤ N ≤ 10^9)
输出:如果存在这样的Q,则输出Q,如果不存在,输出-1
// 下面是自己写的
#include "iostream"
#include "cstdlib"
using namespace std;
long t(long N)
{
if (N<10 && N>=0)
{
return N ;
}
long r = 0;
for (long m = 1, i = 9; i > 1; i--)
{
while ((N % i) == 0)
{
r += m * i;
m *= 10;
N /= i;
}
}
return N > 9 ? -1 : r;
}
int main(int argc, char* argv[])
{
cout<<t(16)<<endl;
cout<<t(0)<<endl;
cout<<t(1)<<endl;
cout<<t(3)<<endl;
cout<<t(17)<<endl;
return 0;
}
结果为:
28
0
1
3
-1