不会数学蒟蒻70分求助
查看原帖
不会数学蒟蒻70分求助
130125
冬天的雨楼主2022/7/27 17:13
#include<cstdio>
#include<cstring>
#include<string>
#define int long long
#define WR WinterRain
using namespace std;
const int WR=100100,mod=10086;
int n,ans,q;
int stk[WR],cnt;
int rnk;
int base[WR],val[WR];
int read(){
    int s=0,w=1;
    char ch=getchar();
    while(ch>'9'||ch<'0'){
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        s=s*10+ch-'0';
        ch=getchar();
    }
    return s*w;
}
int quick_pow(int a,int b){
    int bse=a,res=1;
    while(b){
        if(b&1) res=res*bse%mod;
        bse=bse*bse%mod;
        b>>=1;
    }
    return res;
}
void insrt(int x){
    for(int i=32;i>=0;i--){
        if((x>>i)&1){
            if(!base[i]){
                base[i]=x;
                return;
            }else{
                x^=base[i];
            }
        }
    }
}
signed main(){
    n=read();
    for(int i=1;i<=n;i++){
        int x=read();
        insrt(x);
    }
    q=read();
    for(int i=0;i<=32;i++){
        if(base[i]) stk[++cnt]=i;
    }
    for(int i=1;i<=cnt;i++){
        //printf("%lld ",stk[i]);
        if((q>>stk[i])&1) rnk=(rnk+quick_pow(2,i))%mod;
    }
    printf("%lld\n",(rnk*quick_pow(2,n-cnt-1)%mod+1)%mod);
    return 0;
}

RT

2022/7/27 17:13
加载中...