早教吧 育儿知识 作业答案 考试题库 百科 知识分享

求这样一个n位数(>0),它等于其各位数字的阶乘之和.输入位数n,输出所有满足条件的n位数例如,145=1+4+5若不存在这样的n位数,则输出:"Nooutput\n".输入:n输出:满足条件的n位数#in

题目详情
求这样一个 n 位数( >0 ),它等于其各位数字的阶乘之和.输入位数 n ,输出所有满足条件的 n 位数
例如,145=1 +4 +5 若不存在这样的 n 位数,则输出:"No output\n".输入:n 输出:满足条件的 n 位数
#include
main()
{int n,i,k=0,a,b,s,m0,m=1;
scanf("%d",&n);
for(i=1;i=m0;m--)
{for(i=1,s=0;i0;b--)
a=a*b;
s+=a;}
if(s==m){printf("%d\n",m);k++;}}
if(k==0)printf("No output\n");
}
这个程序是对的,但是输入1的时候,程序是输出 2 1.怎么让其输出的是 1 2
▼优质解答
答案和解析
伪代码:
input n
int result = 0; (就是所求的数)
首先算出当result最小的阶乘数(比如三位数的话就是120 = 5!,4就不行了,以此来确定至少有一位要是5),再算出当result最大的阶乘数,(即<999,6!=720.所以任一位都不能大于6!).
求出这些限制条件后,再用枚举,找到一个就打印出来,一个都没找到就打印No output!.应该没什么问题了.
=========
基本算法就是这些了,如果有更好的算法,欢迎指正!:)
看了 求这样一个n位数(>0),它...的网友还看了以下:

有一个三位数,它的十位上的数字等于个位上的数字与百位上的数字的和,十位上的数减去个位上的数等于2,百  2020-03-31 …

数学问题,有悬赏!一、填空1.一个八位数,最高位上的数既是奇数又是合数,万位上的数既是质数又是偶数  2020-04-09 …

我是一个两位数十位上的数字是一位数中最大的偶数,个位上的数字是最小的奇数.(0.5.9.6)组成的  2020-06-27 …

整数的十进制卡片上写有一个三位数(个位数字不是零),将这个三位数的个位数字与百位数字对调,记这两个  2020-07-15 …

某种彩票的投注号码由7位数字组成,每位数字均为0-9这10个数码中的任一个.由摇号得出一个7位数(  2020-07-20 …

数学一个五位数,个位数为4,一个五位数,个位数为4,这个五位数加上6120后所得的新的五位数的万位  2020-07-25 …

和整数部分一样.小数部分也有数位.如图,看图填空.(1)从小数点起,小数点右边第1位是位,第2位是  2020-07-31 …

D1.一位数除四位数,商有时候事两位数是对还是错2.在一道有余数的除法中,如果除数是3,余数一定()  2020-11-18 …

有一个九位数,与它的反序数的和为N(N为九位数或是十位数),问N的所有数位上的数字有没有可能都是奇数  2020-11-20 …

某种彩票是由7位数字组成,每位数字均为0-9这10个数码中的任一个.由摇号得出一个7位数(首位可为0  2020-12-03 …