BZOJ 1192 [HNOI2006]鬼谷子的钱袋:二进制 砝码称重问题

Posted Leohh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 1192 [HNOI2006]鬼谷子的钱袋:二进制 砝码称重问题相关的知识,希望对你有一定的参考价值。

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1192

题意:

  鬼谷子带了a元钱,他要把a元钱分装在小袋子中,使得任意不大于a的数目的钱,都能用几个小袋子凑出来。

  问你最少用几个小袋子。

 

题解:

  砝码称重问题(二进制):

    你可以自由设置砝码的数量和重量,使得a以内的任意重量都能被称出(只考虑砝码叠加),问你最少的砝码数量。

    例如a = 48时,砝码为:1,2,4,8,16,17.

    所以砝码数量 = a二进制下的位数

 

  这道题一样啊,算二进制位数就好啦。

  水吧。。。(*/ω\*)

 

AC Code:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 
 5 using namespace std;
 6 
 7 int a;
 8 int cnt=0;
 9 
10 int main()
11 {
12     cin>>a;
13     while(a)
14     {
15         a>>=1;
16         cnt++;
17     }
18     cout<<cnt<<endl;
19 }

 

以上是关于BZOJ 1192 [HNOI2006]鬼谷子的钱袋:二进制 砝码称重问题的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ-1192: [HNOI2006]鬼谷子的钱袋

bzoj1192[HNOI2006]鬼谷子的钱袋

[BZOJ1192][HNOI2006]鬼谷子的钱袋

bzoj 1192 [HNOI2006]鬼谷子的钱袋

bzoj 1192: [HNOI2006]鬼谷子的钱袋

bzoj-1192 [HNOI2006]鬼谷子的钱袋(水题)