求这样一个 n 位数( >0 ),它等于其各位数字的阶乘之和.输入位数 n ,输出所有满足条件的 n 位数
1个回答

伪代码:

input n

int result = 0; (就是所求的数)

首先算出当result最小的阶乘数(比如三位数的话就是120 = 5!,4就不行了,以此来确定至少有一位要是5),再算出当result最大的阶乘数,(即<999,6!=720.所以任一位都不能大于6!).

求出这些限制条件后,再用枚举,找到一个就打印出来,一个都没找到就打印No output!.应该没什么问题了.

=========

基本算法就是这些了,如果有更好的算法,欢迎指正!:)