【杭电】[5747]Aaronson

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

其实和那个问最少需用几张纸币付账的题目类似
由题意使 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
");
            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
",sum);
    }
    return 0;
}

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

原文地址:https://www.cnblogs.com/BoilTask/p/12569490.html