QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#823004 | #4283. Power of XOR | cwfxlh | WA | 1ms | 5640kb | C++14 | 838b | 2024-12-20 18:16:44 | 2024-12-20 18:16:45 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long
#define MOD 1000000007
using namespace std;
int n,k,a[503],xxj[503],ans,cnt,C[503][503];
int fstp(int X,int Y){int ret=1,bse=X%MOD;while(Y){if(Y%2)ret=ret*bse%MOD;bse=bse*bse%MOD;Y/=2;}return ret;}
signed main(){
ios::sync_with_stdio(false);
for(int i=0;i<=500;i++)C[i][0]=1;
for(int i=1;i<=500;i++){
for(int j=1;j<=i;j++)C[i][j]=(C[i-1][j-1]+C[i-1][j])%MOD;
}
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
for(int j=43;j>=0;j--){
if((a[i]>>j)&1){
if(xxj[j]==0){
xxj[j]=a[i];
break;
}
else a[i]^=xxj[j];
}
}
}
for(int i=0;i<=44;i++)cnt+=(xxj[i]!=0);
for(int i=1;i<=cnt;i++)ans=(ans+C[cnt][i]*fstp(i,k))%MOD;
for(int i=1;i<=n;i++)if(a[i]==0)ans=ans*2ll%MOD;
ans%=MOD;
ans+=MOD;
ans%=MOD;
cout<<ans;
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 5584kb
input:
3 2 1 2 3
output:
12
result:
ok 1 number(s): "12"
Test #2:
score: 0
Accepted
time: 1ms
memory: 5640kb
input:
2 1000000000 1 2
output:
140625003
result:
ok 1 number(s): "140625003"
Test #3:
score: -100
Wrong Answer
time: 1ms
memory: 5584kb
input:
3 4 21 31 15
output:
132
result:
wrong answer 1st numbers differ - expected: '1076', found: '132'