• nyoj 412-Same binary weight (bitset ,to_ulong())


    412-Same binary weight


    内存限制:64MB 时间限制:0ms 特判: No
    通过数:2 提交数:3 难度:3

    题目描述:

    The binary weight of a positive  integer is the number of 1's in its binary representation.for example,the decmial number 1 has a binary weight of 1,and the decimal number 1717 (which is 11010110101 in binary) has a binary weight of 7.Give a positive integer N,return the smallest integer greater than N that has the same binary weight as N.N will be between 1 and 1000000000,inclusive,the result is guaranteed to fit in a signed 32-bit interget.

    输入描述:

    The input has multicases and each case contains a integer N.
    

    输出描述:

    For each case,output the smallest integer greater than N that has the same binary weight as N.

    样例输入:

    1717
    4
    7
    12
    555555

    样例输出:

    1718
    8
    11
    17
    555557

    C/C++  AC:

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <set>
     8 #include <map>
     9 #include <queue>
    10 #include <climits>
    11 #include <bitset>
    12 #define PI 3.1415926
    13 
    14 using namespace std;
    15 const int MY_MAX = 35;
    16 int N, M;
    17 
    18 int main()
    19 {
    20     while (cin >>N)
    21     {
    22         bitset <32> A(N);
    23         int pos = 32, cnt = 0;
    24         for (int i = 0; i <= 32; ++ i)
    25         {
    26             if (A[i] && !A[i + 1])
    27             {
    28                 A[i] = 0, A[i + 1] = 1;
    29                 pos = i;
    30                 break;
    31             }
    32             if (A[i])
    33                 cnt ++;
    34         }
    35 
    36         for (int i = 0; i < pos; ++ i)
    37         {
    38             if (cnt)
    39             {
    40                 A[i] = 1;
    41                 cnt --;
    42             }
    43             else
    44                 A[i] = 0;
    45         }
    46         printf("%d
    ", A.to_ulong());
    47     }
    48 }
  • 相关阅读:
    录制游戏视频——fraps
    ssh 带端口登录
    You have new mail in /var/spool/mail/root 烦不烦你?
    php生成xml的四种方法(转)
    liunx命令之whereis、which、find的区别和联系
    wancms从apache迁移至nginx
    面试题
    NP
    Careercup | Chapter 7
    OS | 哲学家问题
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9345783.html
Copyright © 2020-2023  润新知