给定一个正整数 N,问从 1 到 N,哪个整数可以被 2 整除次数最多。答案唯一。
所谓被 2 整除次数,以下为例:
- 6 可以被 2 整除 1 次:6→3
- 8 可以被 2 整除 3 次:8→4→2→1
- 3 可以被 2 整除 0 次
#include<iostream>
#include<fstream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int n,ma,mai=1;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
int x=i,s=0;
while(x%2==0){
x/=2;
s++;
}
if(ma<s){
mai=i;
ma=s;
}
}
cout<<mai;
return 0;
}