早教吧作业答案频道 -->其他-->
求这样一个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
例如,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!.应该没什么问题了.
=========
基本算法就是这些了,如果有更好的算法,欢迎指正!:)
input n
int result = 0; (就是所求的数)
首先算出当result最小的阶乘数(比如三位数的话就是120 = 5!,4就不行了,以此来确定至少有一位要是5),再算出当result最大的阶乘数,(即<999,6!=720.所以任一位都不能大于6!).
求出这些限制条件后,再用枚举,找到一个就打印出来,一个都没找到就打印No output!.应该没什么问题了.
=========
基本算法就是这些了,如果有更好的算法,欢迎指正!:)
看了 求这样一个n位数(>0),它...的网友还看了以下:
A地位于23°N,114°E;B地位于是20°N,经度0°.A地位于B地位的什么地方. 2020-05-14 …
复数的n次单位根如何理解nthrootsofunity,复数的n次单位根对于给定n=1,2,3,. 2020-06-12 …
这个极限是怎么求出来的?当n趋向于无穷大的时候(1/n)-sin(1/n)等价于(1/6)n的三次 2020-06-14 …
若n是一个三位正整数,且n的个位数字大于十位数字,十位数字大于百位数字,则称n为“三位递增数”(如 2020-07-17 …
若n条直线两两相交于不同点,则图中有几对对顶角,几对同位角,几对内错角,几对同旁内角?我已作出有n 2020-07-23 …
在四边形abcd中角dab等于角abc等于90度ad等于ab等于4,bc等于8,点n从a出发,沿a 2020-07-30 …
关于中位数,下列理解错误的有()A、当观测值个数为偶数时,(n+1)/2为中位数B、当所获得的数据 2020-08-03 …
根据所提供的数据得出第n排有几个座位某礼堂的座位排列呈圆弧形,横排座位按下列方式设置排数1234…… 2020-11-02 …
若n是一个两位正整数,且n的个位数字大于十位数字,则称n为“两位递增数”(如13,35,56等).在 2020-11-06 …
给一个不多于三位的整数,求出它是几位数,并分别打印出各位上的数字。输入格式一行,一个自然数n输出格式 2020-12-15 …