牛客-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)
输出描述:
最少的天数
备注:
多组输入
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\n",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\n",count); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具