C小加

厚德 博学 求真 至善 The bright moon and breeze
posts - 145, comments - 195, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

题意:

是找到一个最小的正整数Q,使Q的各位数的乘积等于N。

思路:

从9到2取余。

代码:

#include <iostream>
#include 
<algorithm>
using namespace std;


bool fun(int x,int *ops,int &num)
{
    
if(x==1return 1;
    
for(int i=9;i>=2;i--)
    {
        
if(x%i==0)
        {
             ops[num]
=i;
             num
++;
             
return fun(x/i,ops,num);
        }
    }
    
return 0;
}


int main()
{

    
int n;
    
while(cin>>n)
    {
if(n==0) cout<<10<<endl;
    
else if(n<=9) cout<<n<<endl;
    
else
    {
        
int ops[11];
        
int num=0;
        
if(fun(n,ops,num))
        {
            sort(ops,ops
+num);
            
for(int k=0;k<num;k++)
            cout
<<ops[k];
            cout
<<endl;
        }

        
else
        cout
<<-1<<endl;
    }
    }
    
return 0;
}
     


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理