求第n个12345排列数

数字1,2,3,4,5排列可以形成多个数字,按序的话第一个数字12345, 第二个排列数是12354,第100个排列数是51342。

现在给定数字n,求第n个由数字1,2,3,4,5构成的排列数。

输入

输入一个合法的正整数n。

输出

输出第n个由数字1,2,3,4,5构成的排列数。

样例输入 Copy
100
样例输出 Copy
51342

#include<stdio.h>
int baohan(int x)//判断x里是否是1,2,3,4,5五个数字里的数
{
	int b[5]={1,2,3,4,5};
	int a[5];
	int i=0;
	while(x>0)
	{
		a[i]=x%10;
		i++;
		x/=10;
	}
	int count=0;
	for(int j=0;j<5;j++)
	{
		for(int m=0;m<5;m++)
		{
			if(a[j]==b[m])
			{
				count++;
			}
		}
	}
	if(count==5)
	{
		return 1;
	}else{
		return 0;
	} 
}
int meiyoucf(int x)//五个数字彼此不重复
{
	int a[5];
	int i=0;
	while(x>0)
	{
		a[i]=x%10;
		i++;
		x/=10;
	}
	for(int j=0;j<4;j++)
	{
		for(int m=j+1;m<5;m++)
		{
			if(a[m]==a[j])
			{
				return 0;
			 } 
		}
	}
	return 1;
}

int main(void)
{
	int n,count,i;
	int f=0;
	scanf("%d",&n);
	for(i=12345,count=0;i<=54321,count<n;i++)
	{
		if(baohan(i)&&meiyoucf(i))
		{
			count++;
			f=i;
		 } 
	}
	printf("%d",f);
}

 

这一个代码我写了三遍,前后间隔五天以上,,,,马上就要期末考试了,放轻松,加油!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值