Ural 1014 Product of Digits 解题报告

题意:

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

思路:

从9到2取余。

代码:


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


bool fun( int x, int * ops, int & num)
{
if (x == 1 ) return 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 ;
}

转载于:https://www.cnblogs.com/andyidea/archive/2011/06/17/ural1014.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值