GitBook

这里写图片描述 这里写图片描述

其实和那个问最少需用几张纸币付账的题目类似 由题意使 2m尽量大就好

#include<stdio.h>
int main() {
	int T;
	scanf("%d",&T);
	while(T--) {
		__int64 n,m;
		scanf("%I64d %I64d",&n,&m);
		if(n==0) {
			printf("0\n");
			continue;
		}
		__int64 t=1,cnt=1;
		while(t<<1 <=n && cnt<=m) {
			cnt++;
			t<<=1;
		}
		__int64 sum=0;
		while(n) {
			sum+=n/t;
			n%=t;
			t>>=1;
		}
		printf("%I64d\n",sum);
	}
	return 0;
}

题目地址:【杭电】[5747]Aaronson