(算法)各位乘积

来源:互联网 发布:mac系统隐藏文件命令 编辑:程序博客网 时间:2024/05/18 13:43

给出整数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

原创粉丝点击