1. 程式人生 > >【牛客 - 302哈爾濱理工大學軟體與微電子學院第八屆程式設計競賽同步賽(低年級)】 小樂樂算數字(水題,快速冪,lowbit)

【牛客 - 302哈爾濱理工大學軟體與微電子學院第八屆程式設計競賽同步賽(低年級)】 小樂樂算數字(水題,快速冪,lowbit)

題幹:

小樂樂最喜歡玩數字了。

小樂樂最近迷上了2這個整數,他覺得2的冪是一種非常可愛的數字。

小樂樂想知道整數x的最大的 2的冪 (2^y)的因子。

y為整數。

 

輸入描述:

輸入整數x。(1<=x<=1e18)

輸出描述:

輸出整數x的最大(2^y)的因子。

 

示例1

輸入

複製

7

輸出

複製

1

說明

2^0

示例2

輸入

複製

8

輸出

複製

8

示例3

輸入

複製

6

輸出

複製

2

備註:

7的最大(2^x)的因子是:1

8:8

6:2

 

解題報告:

  當個水題存下來以後給學弟做2333、、、

AC程式碼:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define ll long long
#define pb push_back
#define pm make_pair
#define fi first
#define se second
using namespace std;
const int MAX = 2e5 + 5;
char s[400][400];
int main()
{
	ll x;
	cin>>x;
	ll up = (ll)log2(x);
	for(ll i = up; i>=0; i--) {
		if(x%(ll)pow(2,i) == 0) {
			printf("%lld\n",(ll)pow(2,i));return 0 ;
		}
	}
	return 0 ;
 }

好像標解不是這樣的,,是直接輸出一個lowbit,,,想想也確實。。。沒毛病啊、、