牛客多校(2020第六场)B Binary Vector+逆元求法
逆元求法参考链接:https://www.cnblogs.com/daybreaking/p/9342060.html
题目链接:https://ac.nowcoder.com/acm/contest/5671/B
题解思路:
1 #include<iostream>
2 #include<algorithm>
3 #include<cstring>
4 using namespace std;
5
6 #define ll long long
7 const ll mod = 1e9+7;
8 const ll N = 2e7 + 5;
9 ll f[N];
10
11 void init() {
12 ll num1 = 2, num2 = 500000004;
13 f[1] = num2;
14 for (int i = 2; i <= N; i++) {
15 num1 = (num1 * 2) % mod;
16 num2 = (num2 * f[1]) % mod;
17 f[i] = ((f[i-1] * (num1 - 1)) % mod * num2) % mod;
18 }
19
20 for (int i = 1; i < N; i++) { //然后按照题目要求算出异或结果
21 f[i] ^= f[i - 1];
22 }
23 }
24
25 int main() {
26 init();
27 int t;
28 scanf("%d", &t);
29 while (t--) {
30 int n;
31 scanf("%d", &n);
32 printf("%d\n", f[n]);
33 }
34 }

浙公网安备 33010602011771号