牛客多校(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 }

猜你喜欢

转载自blog.csdn.net/Mrwei_418/article/details/108068803
今日推荐