2020牛客多校第六场B. Binary Vector(找规律、逆元)

Binary Vector

https://ac.nowcoder.com/acm/contest/5671/B

B. Binary Vector

传送门

题意:随机n个n维01向量,询问这个n个向量线性无关的概率

题解:

 O(n) 维护2的幂和2的幂的逆元。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9 + 7;
const int N = 2e7 + 5;
 
ll f[N], c[2 * N];
 
void init() {
    f[1] = 500000004;
    ll a = 2, b = f[1];
    for(int i = 2; i < N; ++i) {
        a = a * 2 % mod;
        b = b * f[1] % mod;
        f[i] = f[i - 1] * (a - 1) % mod;
        f[i] = f[i] * b % mod;
    }
    for(int i = 2; i < N; ++i)
        f[i] ^= f[i - 1];
}
 
int main()
{
    init();
    int t, n;
    scanf("%d", &t);
    while(t--) {
        scanf("%d", &n);
        cout<<f[n]<<'\n';
    }
    return 0;
}


全部评论

相关推荐

脾气小祖宗:这简历摸到都得狠狠地消毒液洗手😂
点赞 评论 收藏
分享
阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务