#include <bits/stdc++.h>
#define endl '\n'
#define int long long
#pragma GCC optimize("O2")
using namespace std;
map<string,int> dp;
void backtracking(int num,int i,string &s,string &x,int &res)
{
if(i==s.size())
{
res+=x[num]-'0';
return;
}
if(s[i]!='?')
{
num|=(((int)(s[i]=='1'))<<i);
backtracking(num,i+1,s,x,res);
}else
{
backtracking(num,i+1,s,x,res);
num|=(1LL<<i);
backtracking(num,i+1,s,x,res);
}
}
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cout.precision(0);
cout<<fixed;
int k,q;
cin>>k>>q;
string x;
cin>>x;
int n=(1LL<<k)-1;
while(q--)
{
string s;
cin>>s;
/*if(dp[s]!=0){
cout<<dp[s]<<endl;
continue;
}*/
reverse(s.begin(),s.end());
int num=0,res=0;
backtracking(num,0,s,x,res);
cout<<res<<endl;
//reverse(s.begin(),s.end());
//dp[s]=res;
}
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |