1 条题解

  • 1
    @ 2023-5-7 12:58:08

    第一步,任选一个非负整数 aa,将 nn 增加 aa,这一步所需付出的代价为 aa。 第二步,将 nn 乘以 22,这一步无需付出任何代价。

    我们可以换一种说法: 将 nn 减少 aa ,这一步所需付出的代价为 aa 。 如果 nn22 的倍数,则将它除以 22 ,这一步无需付出代价。 给出一个 xx ,对 xx 进行以上操作,求让 xx 变为 00 的最小代价。

    所以这就是在求 xx 二进制中 11 的个数。

    代码:

    #include<cstdio>
    signed main(){
    	int n,ans(0);
    	scanf("%d",&n);
    	while(n){
    		ans+=(n&1);
    		n>>=1;
    	}
    	printf("%d",ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    4632
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    3
    已通过
    2
    上传者