这个题是个数学题啊。
总体思路不是很难,每个兔子有一个编号,只要不停的看下一个兔子有多少可选编号,再乘上之前的所有可能性就可以算出一共的编号方法。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long n,a[100],shu=1;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//把兔子的编号范围从大到小排序,这样前面的兔子可选编号一定再后面的兔子可选编号之内。
for(int i=0;i<n;i++)
{
shu*=a[i]-i;//第i只兔子前面已经有i-1个编号被占用了,由于我从零开始,不用再给i-1。
shu%=1000000007;//取模
}
cout<<shu<<endl;
return 0;
}
总结:这个题应该算个数论模拟,不要想的太复杂。