列表

详情


NC200629. Y 老师的乐高小镇

描述

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

输入描述

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

输出描述

最少的天数

示例1

输入:

3

输出:

2

说明:

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

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C(clang 3.9) 解法, 执行用时: 5ms, 内存消耗: 232K, 提交时间: 2020-01-05 14:51:01

#include<stdio.h>
int main() {
	long long int n;
	int m = 0;
	while (scanf("%lld", &n) != EOF) {
		while (n > 0) {
			if (n & 1) {
				m++;
			}
			n >>= 1;
		}
		printf("%d\n", m);
		m = 0;
	}
}

C++14(g++5.4) 解法, 执行用时: 19ms, 内存消耗: 488K, 提交时间: 2020-04-11 12:43:34

#include <bits/stdc++.h> 
using namespace std;
int main()
{
    long long k,ans;
	while(cin>>k)
	{
		ans=0;
		while(k)
		{
			ans+=(k%2);
			k/=2;
		}
		cout<<ans<<endl;
	}				
    return 0;
}

C++11(clang++ 3.9) 解法, 执行用时: 28ms, 内存消耗: 396K, 提交时间: 2020-01-08 19:01:36

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ll n; while(cin>>n){ int cnt(0); while(n){ if(n&1) cnt++; n>>=1; } cout<<cnt<<'\n'; }
}

Python3(3.5.2) 解法, 执行用时: 95ms, 内存消耗: 3548K, 提交时间: 2020-01-10 19:12:21

while True:
    try:
        k=int(input())
        n=bin(k)[2:]
        print(n.count("1"))
    except:
        break

上一题