- 小美与数组
怎么过不了的?哪里错了?
- 2025-3-17 22:27:32 @
#include <iostream>
#include <vector>
using namespace std;
const int MOD = 1e9 + 7;
long long fast_pow(long long x, long long y, long long mod) {
long long res = 1;
while (y > 0) {
if (y & 1) res = res * x % mod;
x = x * x % mod;
y >>= 1;
}
return res;
}
int main()
{
int n, q;
cin >> n >> q;
long long sum = 0;
vector<long long>v(n);
for (int i = 0; i < n; i++)
{
cin >> v[i];
sum = (sum + v[i]) % MOD;
}
int l = 0, index;
while(q--)
{
cin >> index;
index--;
//可能导致负数
//sum = sum * 2 % MOD - fast_pow(v[index], 2 * l, 1e9+7);
sum = (sum * 2 - v[index] * fast_pow(2, l, MOD) % MOD + MOD) % MOD;
l++;
}
cout << sum;
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 100
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 438
- 已通过
- 88
- 上传者