“渐升数”(如34678)是指每个数字比其左边的数字大的正整数,已知共有126个五位渐升数,(接着上面)若把这些数按从小到大排列,则第100个数为多少(请用排列与组合算)谢谢
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 13:07:26
“渐升数”(如34678)是指每个数字比其左边的数字大的正整数,已知共有126个五位渐升数,(接着上面)若把这些数按从小到大排列,则第100个数为多少(请用排列与组合算)谢谢
“渐升数”(如34678)是指每个数字比其左边的数字大的正整数,已知共有126个五位渐升数,
(接着上面)若把这些数按从小到大排列,则第100个数为多少(请用排列与组合算)谢谢
“渐升数”(如34678)是指每个数字比其左边的数字大的正整数,已知共有126个五位渐升数,(接着上面)若把这些数按从小到大排列,则第100个数为多少(请用排列与组合算)谢谢
你说倒推,好吧,
(1)最大的渐升数是56789,以5开头的只有1个
(2)以4开头的渐升数在后四位数有5、6、7、8、9,五个数字可供选择,即从五个数字中挑出4个数字的组合,每个组合只有一种排列方式,有C(4:5)=5个
(3)以3开头的渐升数在后四位数有4、5、6、7、8、9,六个数字可供选择,即从六个数字中挑出4个数字的组合,有C(4:6)=15个
以上有21个数字,34567是第106个,所以再往前数5个即可.
(4)以2开头最大的是万位为6,只有26789一个,
其次为万位为5,后三位有6、7、8、9四个数字选择,C(4:3)=4个
以上总共有26个了.
所以第100个为,十万位为2,万位为4的最大数,即24789
换个方法,
五位的渐升数是9选5的组合数,C(9:5)=126,
去除十万位1的,8选5的组合数,C(8:5)=56,
去除十万位1,2的,7选5的组合数,C(7:5)=21,
所以必定是十万位为2的.
再接上题(4)
可以用程序的方法实现:程序如下(用的是C语言编写的)
#include
void main()
{
long int num,j; //判断num是否是渐升数
int i,k,flag,count=0; //flag哨兵值,count是计数器
for(num=12345;num<=56789 && count<100;n...
全部展开
可以用程序的方法实现:程序如下(用的是C语言编写的)
#include
void main()
{
long int num,j; //判断num是否是渐升数
int i,k,flag,count=0; //flag哨兵值,count是计数器
for(num=12345;num<=56789 && count<100;num++)
{
flag=1;
j=num;
do
{
i=j%10; // 取个位数
j=j/10; //除以十,以便取其十位
k=j%10; //取十位数
if(i<=k) //符合条件
flag=0;
}while(j && flag);
if(flag==1) //满足所有条件,将其输出,并计数器自增
{
count++;
printf("%d ",num);
}
}
}
运行结果:前一百个,第一百个是:24789
12345 12346 12347 12348 12349 12356 12357 12358 12359 12367
12368 12369 12378 12379 12389 12456 12457 12458 12459 12467
12468 12469 12478 12479 12489 12567 12568 12569 12578 12579
12589 12678 12679 12689 12789 13456 13457 13458 13459 13467
13468 13469 13478 13479 13489 13567 13568 13569 13578 13579
13589 13678 13679 13689 13789 14567 14568 14569 14578 14579
14589 14678 14679 14689 14789 15678 15679 15689 15789 16789
23456 23457 23458 23459 23467 23468 23469 23478 23479 23489
23567 23568 23569 23578 23579 23589 23678 23679 23689 23789
24567 24568 24569 24578 24579 24589 24678 24679 24689 24789
收起