hdu1196 Lowest Bit(二進位制)
阿新 • • 發佈:2018-11-25
題目:
Problem Description
Given an positive integer A (1 <= A <= 100), output the lowest bit of A.
For example, given A = 26, we can write A in binary form as 11010, so the lowest bit of A is 10, so the output should be 2.
Another example goes like this: given A = 88, we can write A in binary form as 1011000, so the lowest bit of A is 1000, so the output should be 8.
Input
Each line of input contains only an integer A (1 <= A <= 100). A line containing “0” indicates the end of input, and this line is not a part of the input data.
Output
For each A in the input, output a line containing only its lowest bit.
Sample Input
26
88
0
Sample Output
2
8
題意:找出一個數的二進位制從後往前數第一個為1 的數字
解題思路:要知道N%2最先除出來的餘數是2進位制的最低位,所以只要判斷什麼時候N%2的餘數第一次不等於0
程式碼
// // main.cpp // hdu1096 // // Created by zhan_even on 2018/11/1. // Copyright © 2018年 zhan_even. All rights reserved. // #include <iostream> #include <math.h> using namespace std; int main(int argc, const char * argv[]) { int n,i,num,bin[10000]; while (cin>>n&&n) { int temp = n; int m=0; while (temp !=0) { i = temp%2; temp = temp/2; bin[m] = i; m++; } for(int x=0;x<m;x++){ if (bin[x]==1) { num = pow(2,x); cout<<num<<endl; break; } } } return 0; }