您的位置:首页 > 其它

【Educational Codeforces Round 33】 B. Beautiful Divisors (枚举)

2017-11-24 12:49 881 查看
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


#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
scanf("%d", &n);
int ans = 1, cur = 1;
while(ans <= n){
cur++;
int x = 0;
for(int i = cur - 1; i <= cur + cur - 2; ++i){
x += (1 << i);
}
ans = x;
}
for(int i = cur; i >= 1; --i){
int x = 0;
for(int j = i - 1; j <= i + i - 2; ++j){
x += (1 << j);
}
if(n >= x && n % x == 0){
printf("%d\n", x);
return 0;
}
}
}

/*
题意:
定义美丽的数字是其二进制前面k个1后面k-1个0。给一个数字n,问最大美丽因子是多少。

思路:
从大到小枚举美丽数字,看能不能被整除即可。
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces 枚举