木子里的李 题目问答 · 2025/3/17
怎么过不了的?哪里错了?
``` #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 0 0 24