题目链接
贪心处理,每次减去最大的,需要注意的是数的范围的10^9,所以我们只要判断m最大到32就够了,因为2^32足够超过10^9了呀
#include<cstdio>
#include<algorithm>
using namespace std;
#define cl(a,b) memset(a,b,sizeof(a))
#define LL long long
#define pb push_back
#define gcd __gcd
#define For(i,j,k) for(int i=(j);i<k;i++)
#define lowbit(i) (i&(-i))
#define _(x) printf("%d\n",x)
LL qsm(LL a,LL b){
LL ans=1;
while(b){
if(b&1)ans=ans*a;
a=a*a;
b>>=1;
}
return ans;
}
const int maxn = 1e3+200;
const int inf = 1 << 23;
const LL P = 1e9+7;
int main(){
int T;scanf("%d",&T);
while(T--){
LL n,m;scanf("%lld%lld",&n,&m);
int ans=0;
LL t = 1LL<<32;
if(m<=32)t = 1LL<<m;
while(n>0){
if(n>=t){
n-=t;ans++;
}
else {
t/=2;
}
}
_(ans);
}
return 0;
}