zoukankan      html  css  js  c++  java
  • 牛客-Y 老师的乐高小镇

    链接:https://ac.nowcoder.com/acm/contest/3667/I
    来源:牛客网

    题目描述

    Y 老师从小喜欢用乐高搭建自己喜欢的模型,这不突然有一天 Y 老师想用乐高建造一个神奇的小镇。小镇由无穷所不同的建筑物组成(假设 Y 老师有魔法),但是 Y 老师是一个有着强迫症的中二青年,所以一条街道如果修建了一定数量的乐高建筑,那么下个街道一定会修其两倍数量的乐高建筑,并且现在已知第一条街道只有一所乐高建筑。由于元旦佳节的临近,Y 老师还想继续为它的乐高城市添灯结彩,假设 Y 老师现在手上有 k 个装饰品,并且  Y 老师一天必须为一条街道的所有建筑都挂上一个装饰品(如果 Y 老师不能为这条街道的所有建筑挂上装饰品的话,Y 老师是不会选择这条街道的,而且 Y 老师一天只会选择一条街道),请问这 k 个装饰品最少多少天挂完呢 ?

    输入描述:

    多组输入
    每行一个整数 k (1<=k<=1e15)

    输出描述:

    最少的天数
    示例1

    输入

    复制
    3

    输出

    复制
    2

    说明

    Y 老师两天分别选择第一条街和第二条街

    备注:

    多组输入

    AC代码一:
    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
    typedef long long ll;
    const int maxn = 1e5+10;
    int main()
    {
        ll k;
        while(~scanf("%lld",&k)){
            int count=0;
            while(k){
                if(k%2==1){
                    count++;
                }
                k/=2;
            }
            printf("%d
    ",count);
        }
        return 0;
    }

    AC代码2:先打表

    #pragma GCC optimize(2)
    #include<bits/stdc++.h>
    using namespace std;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
    typedef long long ll;
    const int maxn = 1e7+10;
    ll sum[maxn];
    ll k;
    int main()
    {
        for(int i=0;i<=64;i++){
            sum[i]=pow(2,i);    
        } 
        while(scanf("%d",&k)!=EOF){
            int ans=0;
            for(int i=0;i<=64;i++){
                if(k<=sum[i]){
                    ans=i;
                    break;
                }
            }
            ll count=0;
            for(int i=ans;i>=0;i--){
                if(k>=sum[i]){
                    k-=sum[i];
                    count++;
                }
            }
            printf("%d
    ",count);
        } 
        return 0;
    }



  • 相关阅读:
    VMware Workstation 虚拟机纯 Linux 终端如何安装 VMware Tools ?
    Linux Debian 如何部署 Qt?
    D3D9和OpenGL加载纹理图片的API是哪个?
    为什么调用 GdiplusShutdown 函数会在 DllExports::GdipDeleteGraphics(nativeGraphics) 位置抛出异常?
    What are DESC and ASC Keywords?
    qt sql 模块有哪些类?
    如何使用cmd命令行打开一个文件夹?
    cvs 文件如何解析?
    qt 如何给图元安装一个场景事件过滤器?
    linux命令 cp 递归复制 带权限复制
  • 原文地址:https://www.cnblogs.com/lipu123/p/12153340.html
Copyright © 2011-2022 走看看