Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- //#define MOD ((int)1e9 + 7)
- #define MOD ((int)100000007)
- #define MAX ((int)2e9)
- using namespace std;
- typedef long long LL;
- int vis[1024] , A[1024] , B[1024] , dpp[1024][1024] , last;
- int solve(int cur , int rem)
- {
- if(cur > last){
- if(rem == 0) return 1;
- else return 0;
- }
- if(dpp[cur][rem] != -1) return dpp[cur][rem];
- int ans = 0;
- /// case 0:
- ans += solve(cur + 1 , rem);
- /// case 1:
- ans += solve(cur + 1 , rem ^ A[cur]);
- return dpp[cur][rem] = ans % MOD;
- } /// O(n * n)
- void solve(int caseNo)
- {
- int n , m;
- cin>>n>>m;
- last = n;
- memset(vis,0,sizeof vis);
- for(int i = 1 ; i <= n ; i++) cin>>A[i];
- for(int i = 1 ; i <= m ; i++) cin>>B[i];
- for(int i = 1 ; i <= m ; i++) vis[B[i]] = 1;
- int ans = 0;
- memset(dpp,-1,sizeof dpp);
- for(int val = 0 ; val < 1024 ; val++){
- if(vis[val] == 0){
- ans += solve(1 , val);
- ans %= MOD;
- }
- }
- cout<<"Case "<<caseNo++<<": "<<ans<<endl;
- }
- int main()
- {
- /// problem: https://www.spoj.com/problems/BADXOR/
- int t , caseNo = 1;
- cin>>t;
- while(t--){
- solve(caseNo++);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement