Description
The multiplicative persistence of a number is defined by Neil Sloane (Neil J.A. Sloane in The Persistence of a Number published in Journal of Recreational Mathematics 6, 1973, pp. 97-98., 1973) as the number of steps to reach a one-digit number when repeatedly multiplying the digits. Example:
679 -> 378 -> 168 -> 48 -> 32 -> 6.
That is, the persistence of 679 is 6. The persistence of a single digit number is 0. At the time of this writing it is known that there are numbers with the persistence of 11. It is not known whether there are numbers with the persistence of 12 but it is known that if they exists then the smallest of them would have more than 3000 digits.
The problem that you are to solve here is: what is the smallest number such that the first step of computing its persistence results in the given number?
The problem that you are to solve here is: what is the smallest number such that the first step of computing its persistence results in the given number?
Input
For each test case there is a single line of input containing a decimal number with up to 1000 digits. A line containing -1 follows the last test case.
Output
For each test case you are to output one line containing one integer number satisfying the condition stated above or a statement saying that there is no such number in the format shown below.
Sample Input
0
1
4
7
18
49
51
768
-1
Sample Output
10
11
14
17
29
77
There is no such number.
2688
思路
-
将给定数分解质因子,若只有2、3、5、7,则说明这个数可以表示成一位数的连乘积,于是这些连乘积的乘数组成的最小数就是所求。若还有大于10的质因子,则输出There is no such number.
-
将3个2合成为8,2个3合成9,2*3合成6,2个2合成4可以减少位数,从而获得更小的数字。
-
给定的一组数字组成多位数,显然越大的放在越低的数位上。
代码
本文介绍了乘积持久数的概念及其计算方法,通过分解质因子来寻找特定条件下的最小数,并提供了一个实现该算法的C++代码示例。
350

被折叠的 条评论
为什么被折叠?



