逆元求法参考链接: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 ", f[n]); 33 } 34 }