题目来源于牛客竞赛:https://ac.nowcoder.com/acm/contest/discuss
题目描述:

输入描述:

输出描述:

示例1:

题解:

代码:
#include <bits/stdc++.h>
static const int MOD = 1e9 + 7;
int inverse(int a)
{
return a == 1 ? 1 : 1LL * (MOD - MOD / a) * inverse(MOD % a) % MOD;
}
int main() {
int n;
while (scanf("%d", &n) == 1) {
std::vector<int> a(n);
for (int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
}
int result = 0;
for (int i = 0; i < n; ++i) {
int p = 2LL * a[i] % MOD;
int aa = 1LL * a[i] * a[i] % MOD;
for (int j = 0; j < n; ++j) {
if (i != j) {
p = 1LL * p * (1LL * a[j] * a[j] % MOD + MOD - aa) % MOD;
}
}
(result += inverse(p)) %= MOD;
}
printf("%d\n", result);
}
}
更多问题可关注牛客竞赛区,一个刷题、比赛、分享的社区。
传送门:https://ac.nowcoder.com/acm/contest/discuss

本文解析了牛客竞赛中的一道算法题,通过逆元求解特定数学问题,提供了详细的代码实现,包括输入处理、逆元计算及最终结果输出。

608

被折叠的 条评论
为什么被折叠?



