扩充序列
利用arr数组首先生成2的k次方,方便后面进行计算,不过要记得开long long
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N = 60;
typedef long long ll;
ll n,k;
ll arr[N];
int fun(int sn,ll sk)
{
ll tmp = arr[sn];
if(sk == tmp)
{
return sn+1;
}
return fun(sn-1,abs(sk-tmp));
}
int main()
{
cin>>n>>k;
arr[0] = 1;
for(int i=1;i<=55;i++)
{
arr[i] = arr[i-1]*2;
}
int ans = fun(n,k);
cout<<ans<<endl;
return 0;
}