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;
}
覺得不錯,請點個贊,謝謝。
發佈了34 篇原創文章 · 獲贊 17 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章