P1866 编号
意思是每只兔子都在1~maxnumber[i]之间选一个号码,每个兔子选的不能一样,求出一共有多少种的方法。
那总方法数就等于第一只兔子的选择数*第二只兔子的选择数*第三只兔子的选择数*......*第N只兔子的选择数
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
long long ans=1,n,a[55];
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++)
{
ans*=a[i]-i;//按照推出的公式计算
ans=ans%1000000007;//按照题目要求取余
}
cout<<ans<<endl;
return 0;
}
这题就是个纯数论,只要推出公式来就很简单了(*^-^*)