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;
}

这题就是个纯数论,只要推出公式来就很简单了(*^-^*)

原文地址:https://www.cnblogs.com/zjylzf/p/12850084.html