• bzoj1192


    • 可能有点水, 但这种题做的很少, 还是练习一下比较好
    • 考虑二进制
    • 任何数都可用2的幂次方加和得到.
    • 那么把m个金币拆成几个2的幂次方的数就可以凑出任何 1~m 之间的数了. 但是不一定会正好, 把剩下的钱拆成单独一份, 答案就是第一个大于m的2^n的那个n. 那如果正好拆完呢? 因为最后一份不可以是m, 所以还是要把m拆开, 结果还是一样.
    • 为什么是二进制不是其他进制呢? 因为任何数都可用2的幂次方加和得到. 但其他的就不一定了
    • -------ghy1953
      #include <stdio.h>
      #include <algorithm>
      #include <cstring>
      #include <cmath>
      #include <queue>
      #include <vector>
      using namespace std;
      int n;
      int main()
      {
        scanf("%d",&n);
        for(int i=0;;i++)
        {
            if(1<<i>n)
            {
              printf("%d
      ",i);
              break;
            }
        }
        return 0;
      }
      View Code
  • 相关阅读:
    个人站立会议内容
    NABCD
    12.2
    12.1
    11.21
    11.20
    11.19
    11.18
    11.17
    11.16个人计划
  • 原文地址:https://www.cnblogs.com/new-hand/p/7733799.html
Copyright © 2020-2023  润新知