(一)
可以看成把一個數用二進位制表示。
如果 \(n\le2^k-1\) ,都可以取,輸出 \(n+1\)。
否則可以取 \(0\sim2^k-1\),輸出 \(2^k\)。
(二)
AC 程式碼。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,k;
signed main(){
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&n,&k);
int s=1;
for(int i=1;i<=k;i++){
s=s*2;
if(s>n)break;
}
printf("%lld\n",min(n+1,s));
}
return 0;
}