扩充序列(找规律)

扩充序列

利用arr数组首先生成2的k次方,方便后面进行计算,不过要记得开long long
代码如下:

#include
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;
}

你可能感兴趣的:(c++,排序算法,c++,算法)