HDU 1.2.6 (ACM steps)

<table cellspacing="0" cellpadding="0" width="100%" align="center"><tbody><tr><td class="problem_content"><div class="panel_title" align="left">Problem Description</div><div class="panel_content">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.
</div><div class="panel_bottom"> </div></td></tr><tr><td class="problem_content"><div class="panel_title" align="left">Input</div><div class="panel_content">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.
</div><div class="panel_bottom"> </div></td></tr><tr><td class="problem_content"><div class="panel_title" align="left">Output</div><div class="panel_content">For each A in the input, output a line containing only its lowest bit.
</div><div class="panel_bottom"> </div></td></tr><tr><td class="problem_content"><div class="panel_title" align="left">Sample Input</div><div class="panel_content"><pre>26
88
0
 
Sample Output
2
8
 
Author
SHI, Xiaohan
 
Source
Zhejiang University Local Contest 2005



// 解法(1) 
//#include <stdio.h>
//#include <stdlib.h>
//#include <string.h>
//#include <math.h>
//int main(void)
//{
//	int num, sum;
//	char binary[10] = {0};
//	int i, j;
//	while(scanf("%d", &num)!=EOF && num != 0)
//	{
//		sum = 0;
//		itoa(num, binary, 2);
//		for(i = strlen(binary) - 1, j = 0; i >= 0; i--, j++)
//		{
//			sum += (binary[i] - '0') * pow(2, j);// 數字*數權(8421) 
//			if(binary[i] == '1')	break;
//		}
//		printf("%d\n", sum);
//	}
//	
//	return 0;
//}

// 解法(2) 
#include <stdio.h>
#include <math.h>
int main(void)
{
	int num, sum;
	while(scanf("%d", &num)!=EOF && num != 0)
	{
		int t = 0;
		while(num % 2 == 0)// 判斷每次的餘數,只要是0,就滿足 
		{
			t ++;
			num /= 2;
		}
		printf("%d\n", (int)pow(2, t));
	}
	
	return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章