您的位置:首页 > 其它

codeforces Educational Codeforces Round 33 (Rated for Div. 2)B

2017-11-24 01:39 471 查看
B. Beautiful Divisors

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

Recently Luba learned about a special kind of numbers that she calls beautiful numbers. The number is called beautiful iff its
binary representation consists of k + 1 consecutive ones, and then k consecutive
zeroes.

Some examples of beautiful numbers:

12 (110);

1102 (610);

11110002 (12010);

1111100002 (49610).

More formally, the number is beautiful iff there exists some positive integer k such that the number is equal to (2k - 1) * (2k - 1).

Luba has got an integer number n, and she wants to find its greatest beautiful divisor. Help her to find it!

Input

The only line of input contains one number n (1 ≤ n ≤ 105)
— the number Luba has got.

Output

Output one number — the greatest beautiful divisor of Luba's number. It is obvious that the answer always exists.

Examples

input
3


output
1


input
992


output
496


mad  留下了 不细心看题 代码能力垃圾啊的眼泪    刚开始没看清题 写的很麻烦 之后没又加 等号 一直wa 

#include<bits/stdc++.h>
using namespace std;
long long xxx(string x){
int a[10001];
for(int j=0;j<x.size();j++){
a[j]=x[j]-'0';
}
long long l=0;
long long i=x.size();
for(int j=0;j<x.size();j++){
l+=pow(2,i-j-1)*a[j];
}
return l;
}
int main(){
int n;
cin>>n;
string a;
int i=0;
int b[10001];
for(int j=1;;j++){
for(int k=0;k<j;k++){
a=a+"1";
}
for(int k=0;k<j-1;k++){
a=a+"0";
}
b[j]=xxx(a);
if(b[j]>10000000){
i=j;
break;
}
a="";
}
int x=0;
for(int j=1;j<=i;j++){
if(b[j]<=n&&n%b[j]==0){ //这里忘记加了
x=b[j];
}
else if(b[j]>n) break;
}
cout<<x<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: