题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss
题目描述:
输入描述:
输出描述:
示例1:
示例2:
示例3:
题解:
代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll p = 1000000007;
ll pw(ll x, ll y) {
ll re = 1;
for (; y > 0; y >>= 1) {
if (y & 1) {
re = re * x % p;
}
x = x * x % p;
}
return re;
}
int main() {
int n, b, x;
map<int, int> g;
cin >> n >> b;
ll z = 1;
for (int i = 1; i <= n; i++) {
cin >> x;
g[x]++;
if (b == 1) {
z = z * i % p * pw(g[x], p - 2) % p;
} else {
z = z * (1 - pw(b, i)) % p * pw(1 - pw(b, g[x]), p - 2) % p;
}
}
if (z < 0) {
z += p;
}
cout << z << endl;
return 0;
}
更多问题,更详细题解可关注牛客竞赛区,一个刷题、比赛、分享的社区。
传送门:https://ac.nowcoder.com/acm/contest/discuss