Advertisement
_no0B

Untitled

Nov 13th, 2021
771
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. //#define MOD ((int)1e9 + 7)
  3. #define MOD ((int)100000007)
  4. #define MAX ((int)2e9)
  5.  
  6. using namespace std;
  7.  
  8. typedef long long LL;
  9.  
  10.  
  11. int vis[1024] , A[1024] , B[1024] , dpp[1024][1024] , last;
  12.  
  13. int solve(int cur , int rem)
  14. {
  15.     if(cur > last){
  16.         if(rem == 0) return 1;
  17.         else return 0;
  18.     }
  19.     if(dpp[cur][rem] != -1) return dpp[cur][rem];
  20.     int ans = 0;
  21.     /// case 0:
  22.     ans += solve(cur + 1 , rem);
  23.     /// case 1:
  24.     ans += solve(cur + 1 , rem ^ A[cur]);
  25.     return dpp[cur][rem] = ans % MOD;
  26. } /// O(n * n)
  27.  
  28. void solve(int caseNo)
  29. {
  30.     int n , m;
  31.     cin>>n>>m;
  32.     last = n;
  33.     memset(vis,0,sizeof vis);
  34.     for(int i = 1 ; i <= n ; i++) cin>>A[i];
  35.     for(int i = 1 ; i <= m ; i++) cin>>B[i];
  36.     for(int i = 1 ; i <= m ; i++) vis[B[i]] = 1;
  37.     int ans = 0;
  38.     memset(dpp,-1,sizeof dpp);
  39.     for(int val = 0 ; val < 1024 ; val++){
  40.         if(vis[val] == 0){
  41.             ans += solve(1 , val);
  42.             ans %= MOD;
  43.         }
  44.     }
  45.     cout<<"Case "<<caseNo++<<": "<<ans<<endl;
  46. }
  47.  
  48. int main()
  49. {
  50.     /// problem: https://www.spoj.com/problems/BADXOR/
  51.     int t , caseNo = 1;
  52.     cin>>t;
  53.     while(t--){
  54.  
  55.         solve(caseNo++);
  56.     }
  57.     return 0;
  58. }
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement