zoukankan      html  css  js  c++  java
  • HDOJ 1196 Lowest Bit

    题目大意是给一个1-100的整数,要求首先转化成2进制,然后从最低位开始数起到不是0的位停止,输出这些位代表队额10进制数

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 int bits[7]={1,2,4,8,16,32,64};
     6 int judge(int a)//判断输入数据的范围
     7 {
     8     if(a>=64)
     9         return 6;
    10     else if(a<64&&a>=32)
    11         return 5;
    12     else if(a<32&&a>=16)
    13         return 4;
    14     else if(a<16&&a>=8)
    15         return 3;
    16     else if(a<8&&a>=4)
    17         return 2;
    18     else if(a<4&&a>=2)
    19         return 1;
    20     else if(a<2&&a>=1)
    21         return 0;
    22 }
    23 int main()
    24 {
    25     int A;
    26     
    27     int i,j,state,result;
    28     cin>>A;
    29     while(A)
    30     {
    31         int flag[7]={0};
    32         result=1;
    33         while(A)
    34         {
    35             state=judge(A);
    36             flag[state]=1;
    37             A=A-bits[state];//减去其最大的那个数,重新进行判断,类似于一个递归调用,直到为0即可结束
    38         }
    39         for(i=0;i<7;i++)
    40         {
    41             if(flag[i]==1)
    42                 break;
    43         }
    44         for(j=0;j<i;j++)
    45             result*=2;
    46         cout<<result<<endl;
    47         cin>>A;
    48     }
    49 }
  • 相关阅读:
    code3728 联合权值
    Codevs 4600 [NOI2015]程序自动分析
    code1540 银河英雄传说
    code1074 食物链
    堆排序
    哈夫曼树与哈夫曼码
    优先队列用法
    code1154 能量项链
    code1225 八数码Bfs
    javascript5
  • 原文地址:https://www.cnblogs.com/kb342/p/3783808.html
Copyright © 2011-2022 走看看