编号
题目描述
太郎有 N N N 只兔子,现在为了方便识别它们,太郎要给他们编号。兔子们向太郎表达了它们对号码的喜好,每个兔子 i i i 想要一个整数,介于 1 1 1 和 M i M_i Mi 之间(可以为 1 1 1 或 M i M_i Mi)。当然,每个兔子的编号是不同的。现在太郎想知道一共有多少种编号的方法。
你只用输出答案对 1 0 9 + 7 10^9+7 109+7 取余的结果即可。如果这是不可能的,就输出 0 0 0。
输入格式
第一行是一个整数 N N N。
第二行 N N N 个整数 M i M_i Mi。
输出格式
一个整数,表示方案总数。
样例 #1
样例输入 #1
2
5 8
样例输出 #1
35
提示
数据范围及约定
对于全部数据, 1 ≤ N ≤ 50 1 \le N \le 50 1≤N≤50, 1 ≤ M i ≤ 1000 1\le M_i\le 1000 1≤Mi≤1000。
问题链接: P1866 编号
问题分析: 数学问题,不解释。
参考链接: (略)
题记: (略)
AC的C++语言程序如下:
/* P1866 编号 */
#include <iostream>
#include <algorithm>
using namespace std;
const long long MOD = 1000000007;
const int N = 50;
int a[N];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
sort(a, a + n);
long long ans = 1;
for (int i = 0; i < n; i++)
ans *= (a[i] - i), ans %= MOD;
cout << ans;
return 0;
}