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;
}
覺得不錯,請點個贊,謝謝。