2020牛客多校第六場B題Binary Vector(數論逆元打表)
阿新 • • 發佈:2020-08-02
https://blog.csdn.net/qq_45845404/article/details/107736792這個部落格講的很清楚。惡補線性代數。
題解:菜雞找規律,猛男推公式。
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); #include <bits/stdc++.h> #define inf 0x3f3f3f3f using namespace std; typedef long long ll; const int maxn=2e7+7; const ll mod =1e9+7; ll f[maxn],inv[maxn];void init(){ f[1]=500000004;inv[0]=1; for(int i=1;i<maxn;i++){ inv[i]=inv[i-1]*500000004; inv[i]%=mod; } for(int i=1;i<maxn;i++){ inv[i]=inv[i]*inv[i-1]; inv[i]%=mod; } ll tmp=1,p=1; for(int i=1;i<=maxn;i++){ p=p*2; p%=mod; tmp=(p-1)*tmp %mod; f[i]=tmp*inv[i]%mod; } for(int i=1;i<maxn;i++){ f[i]=f[i]^f[i-1]; } } int main(){ IOS int t,n; init(); cin>>t; while(t--){ cin>>n; cout<<f[n]<<endl; } return 0; }