codevs 2865 天平系统1
题目描述 Description
一个天平,砝码分别为1g、2g、4g、8g、16g、32g、...、8192g,每个砝码只有一个,要称重的物品放在天平的左侧,而砝码只允许放在天平的右侧。已知一个物品的重量,问如何称重?试编程解决。
输入描述 Input Description
一个重量N
输出描述 Output Description
所使用的砝码重量,按从大到小的顺序输出。
样例输入 Sample Input
33
样例输出 Sample Output
32 1
数据范围及提示 Data Size & Hint
(1≤N≤16000)
思路:
贪心,从大到小枚举如果小于n就输出,同时n-a[i],直到n为0为止。
代码:
#include<cstdio> using namespace std; int a[14],n; int main() { int i,j; a[1]=1; for(i=2;i<=14;i++) a[i]=a[i-1]*2; scanf("%d",&n); for(i=13;i>=1;i--) { if(n<a[i]) continue; else { n-=a[i]; printf("%d ",a[i]); } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步