奶牛編號

題目描述

牛牛養了n只奶牛,牛牛想給每隻奶牛編號,這樣就可以輕而易舉地分辨它們了。 每個奶牛對於數字都有自己的喜好,第i只奶牛想要一個1和x[i]之間的整數(其中包含1和x[i])。

牛牛需要滿足所有奶牛的喜好,請幫助牛牛計算牛牛有多少種給奶牛編號的方法,輸出符合要求的編號方法總數。

輸入描述:

輸入包括兩行,第一行一個整數n(1 ≤ n ≤ 50),表示奶牛的數量 第二行爲n個整數x[i](1 ≤ x[i] ≤ 1000)

輸出描述:

輸出一個整數,表示牛牛在滿足所有奶牛的喜好上編號的方法數。因爲答案可能很大,輸出方法數對1,000,000,007的模。

示例1

輸入

4 4 4 4 4

輸出

24

 

數學排列類問題。若x[i] > x[j],則x[i]要減去x[j]中選擇的一種可能情況,及總數爲x[j] * (x[i] - 1),以此類推。

所以從小到大排序的話,每次乘以已經選擇的n種情況就可以了。

 

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
    int n;
    cin >> n;
    vector<int> v(n);
    for(int i = 0; i< n; i++)
        cin >> v[i];
    sort(v.begin(), v.end());
    long long ans = 1;
    int cnt = 0;
    for(int i = 0; i < n; i++)
    {
        ans *= (v[i] - cnt);
        ans %= 1000000007;
        cnt++;
    }
    cout << ans << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章