C Progamming Test 6-5: N进制中数字互不重复的数的个数

Description

在二进制系统里面,只有2个没有重复数字的正整数:1、10;在三进制系统里面有10个这样的正整数,即:1、2、10、12、20、21、102、120、201、210;编写程序求出N进制中具有上述性质的正整数个数,1 <N<=12

Input

三个以下数据: 
表示进制的整数N

Output

符合要求的数的个数,数与数之间用空格隔开

Sample Input

2 3 4

Sample Output

2 10 48

这题比较有趣,看似是有关进制的算法问题,实际上把它想成一个排列问题就简单多了。具体算法如下:

#include<stdio.h>
int fun(int n)
{
	int i,sum=1;
	for(i=1;i<=n;i++)
	{
		sum*=i;
	}
	return sum;
}
int main()
{
	int n,j,i,sum=0;
	for(i=0;i<3;i++)
	{
		sum=0;
		scanf("%d",&n);
		for(j=0;j<n;j++)
		{
			sum+=fun(n-1)/fun(n-1-j);
		}
		printf("%d ",sum*(n-1));
	}
	return 0;
}
觉得不错,请点个赞,谢谢。

猜你喜欢

转载自blog.csdn.net/zmc1248234377/article/details/79490037
今日推荐