ALIEN-OR Question Wrong Answer :-Need debugging help

Hey,
Can anyone help me figure out a test case for which my code would give wrong answer? I checked all the cases I could by myself. In the code,I am checking if all 1,2,4,16 elements i.e. till 2^k-1 occur in the vector of strings.

Here is the code:-

include <bits/stdc++.h>
using namespace std;
define ll long long
int btd(string str)
{
int dec_num = 0;
int power = 0 ;
int n = str.length() ;

  for(int i = n-1 ; i>=0 ; i--){
  if(str[i] == '1'){
    dec_num += (1<<power) ;
  }
  power++ ; 
}

return dec_num;

}
int main() {
// your code goes here
int t;
cin>>t;
while(t–)
{
ll n,k;
cin>>n>>k;
if(k>n)
{
cout<<“NO”<<endl;
continue;
}
map<ll,ll>mp;
for(ll i=1;i<=n;i++)
{
string x;
cin>>x;
ll d=btd(x);
mp[d]++;
}
int flag=0;
for(ll j=0;j<=(k-1);j++)
{
ll op=pow(2,j);
if(mp.find(op)!=mp.end())
continue;
else
{
flag=1;
break;
}
}
if(flag==0)
cout<<“YES”<<endl;
else
cout<<“NO”<<endl;
}
}

The value of n can be 100 and you are calculating 2^100 in the function. It overflows, Even in the second for loop it overflows.

Thank you for pointing out my mistake!