早教吧作业答案频道 -->其他-->
求这样一个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),它...的网友还看了以下:
甲乙丙在数轴上分别以每秒9,7,6.5个单位长的速度向右移,乙在甲丙之间,丙在甲右边,甲乙相距24 2020-05-19 …
一个三位数在300和400之间.一个三位数在300和400之间,这个三位数上的数字之和是9若个位数 2020-06-14 …
有一个两位数,其十位数字比个位数字大2,这两位数在50和70之间,你能求出这两位数吗?用不等式求此 2020-06-18 …
.求翻译王文度、范荣期俱为简文所要,范年大而位小,王年小而位大,将前,更相推在前,既移久,王遂在范 2020-06-28 …
英语翻译王文度、范荣期俱为简文所要,范年大而位小,王年小而位大,将前,更相推在前,既移久,王遂在范 2020-06-28 …
在排列并排的座次时,我国的传统作法是“以左为上”,即认为居左之位高于居右之位.而西方国家以及国际上的 2020-11-06 …
酒席上,一位男客向一位美丽的太太敬酒,嘴里念道:1“醉翁之意不在酒.”这位太太立刻举杯回敬道:2“醉 2020-11-23 …
酒席上,一位男客人向一位美丽的太太敬酒,嘴里念到:“醉翁之意不在酒”1、这位太太立刻举杯回敬道:“醉 2020-11-27 …
[在Access中创建VBA模块]1、求符合下列条件的四位数.[在Access中创建VBA模块]1、 2020-12-14 …
一个N极朝下的条形磁铁竖直下落,恰能穿过水平防止的方形导线框,1位置在线框之上,2位置在线框之上,1 2020-12-17 …