zoukankan      html  css  js  c++  java
  • hdu 1098 Lowest Bit 解题报告

    题目链接:http://code.hdu.edu.cn/game/entry/problem/show.php?chapterid=1&sectionid=2&problemid=22

    题目意思:给出一个数,观察其二进制表示,从右往左看,记录遇到第一个出现1的位置pos,做2 ^ pos 的运算。

         这几天杭电的告示:Exercise Is Closed Now!  再加上想用一些简单的题目来调剂一下,因此就做ACM Steps  吧。

         用了递归的方法来做。

     1 #include <iostream>
     2 #include <math.h>      // pow库函数的使用
     3 using namespace std;
     4 
     5 int cnt;
     6  
     7 void cal(int n)
     8 {
     9     int flag = 0;
    10     if (n == 0)
    11         return;    // 递归的出口,已计算完n的二进制表示
    12     else
    13     {
    14         if (n % 2)     // 从右往左数,第一次遇到1
    15         {
    16             printf("%.0lf\n", pow(2, cnt));   // 计算2^cnt
    17             flag = 1;
    18         
    19         }
    20         else
    21             cnt++;    // 累计不为1的位置有多少个
    22         if (flag)
    23             return;      // 一旦从右边发现1,递归结束,也是递归的出口
    24         cal(n/2);                        
    25     }        
    26 }
    27 
    28 int main()
    29 {
    30     int a;
    31     while (scanf("%d", &a) != EOF && a)
    32     {
    33         cnt = 0;
    34         cal(a);
    35     }
    36     return 0;
    37 }

        

  • 相关阅读:
    二分
    枚举
    dp
    bfs
    bfs
    dfs
    ipython快捷键
    虚拟机串口连接嵌入式开发板
    rtmp向IR601移植过程(无功能步骤,只有移植步骤)
    静态库和动态库
  • 原文地址:https://www.cnblogs.com/windysai/p/3334052.html
Copyright © 2011-2022 走看看