Y 老师的乐高小镇

题目链接:

http://www.jsuacm.cn/problem.php?cid=1537&pid=8

题面:

在这里插入图片描述

思路:

这道题目的基本思路就是把K转换为二进制,因为每条街对应的数目都是二进制中的1,10,100,100.。。。。。。,我们把K转换为二进制,就只需要判断这转换为二进制后,出现了多少次1,就是用二进制表示的最少数目

参考代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
int main()
{
    long long k;
    while(scanf("%lld",&k)!=EOF)
    {
        long long c,ans=0;
        while(k)
        {
            c=k%2;//判断二进制的每一位
            if(c==1)//如果出现1就加1
            {
                ans++;
            }
            k=k/2;//进一位
        }
        printf("%lld\n",ans);
    }
}

发布了55 篇原创文章 · 获赞 12 · 访问量 8963

猜你喜欢

转载自blog.csdn.net/qq_45740533/article/details/103659667
y
m y
Y/N