出題人的表達能力太差,題目敘述得很糟糕,最後兩個例子也錯了
比較好的敘述是,輸入n,輸出從0到32中取6項按字典序排序下的第n個組合(從第0個組合0,1,2,3,4,5開始計)
這種談不上什麽難題,只不過是入門級的問題
在給定前k項的(記第k項為m)情況下余下的項***有C(32-m,6-k)種情況,這裏C(x,y)表示x取y的組合數,以此編程即可
給妳壹個例子
#include?<stdio.h>int?binom(int?n,?int?m)
{
int?i,?c?=?1;
if?(2*m?>?n)
n?=?n-m;
for?(i?=?1;?i?<=?m;?i++)
c?=?c*(n+1-i)/i;
return?c;
}
int?main()
{
int?i,?n;
int?A[6]?=?{-1};
while?(scanf("%d",?&n)?!=?EOF)
{
n++;
if?(n?<=?0?||?n?>?binom(33,?6))
{
printf("Invalid?input\n");
continue;
}
for?(i?=?1;?i?<=?5;?i++)
{
for?(A[i]?=?A[i-1]?+?1;?;?A[i]++)
{
int?t?=?binom(32?-?A[i],?6?-?i);
if?(n?>?t)
n?-=?t;
else
break;
}
printf("%d,",?A[i]);
}
printf("%d\n",?A[i-1]?+?n);
}
return?0;
}