牛牛养了n只奶牛,牛牛想给每只奶牛编号,这样就可以轻而易举地分辨它们了。 每个奶牛对于数字都有自己的喜好,第i只奶牛想要一个1和x[i]之间的整数(其中包含1和x[i])。
牛牛需要满足所有奶牛的喜好,请帮助牛牛计算牛牛有多少种给奶牛编号的方法,输出符合要求的编号方法总数。
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),表示奶牛的数量 第二行为n个整数x[i](1 ≤ x[i] ≤ 1000)
输出一个整数,表示牛牛在满足所有奶牛的喜好上编号的方法数。因为答案可能很大,输出方法数对1,000,000,007的模。
4 4 4 4 4
24
#include <bits/stdc++.h>
using namespace std;
int main(int argc, char const *argv[])
{
int cow_nums;
cin >> cow_nums;
int x[cow_nums];
for (int i = 0; i < cow_nums; ++i) {
cin >> x[i];
}
sort(x, x + cow_nums);
long long res = 1;
for (int i = 0; i < cow_nums; ++i) {
res *= (x[i] - i);
res %= 1000000007;
}
cout << res;
}
#include <iostream> #include <vector> using namespace std; int main(){ int num_niu; unsigned long long num_name = 1; vector<int> niu; int temp1; cin >> num_niu; for(int i = 0; i<num_niu; i++){ int temp; cin >> temp; niu.push_back(temp); } for(int i = 0; i < niu.size(); i++) for(int j = i; j < niu.size(); j++){ if(niu[i] > niu[j]){ temp1 = niu[j]; niu[j] = niu[i]; niu[i] = temp1;} } int flag = 0; for (int i = 0; i < niu.size(); i++){ if (i == 0) num_name *= niu[i]; else num_name *= (niu[i] - (++flag)); num_name %= 1000000007; //最终死在这步上,不能最后取模,会溢出 } cout << num_name; return 0; }