您的位置:首页 > 其它

【Educational Codeforces Round 33 B】Beautiful Divisors

2017-11-24 12:41 423 查看
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
题意:找到能够满足整除n的最大的漂亮数(漂亮数的定义就是十进制数转为二进制时,有k+1个1和k个0)
思路:打表。。。


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define inf 0x3f3f3f
int main()
{
int num[10];
int k,i,n,max ;
for(i = 0; i < 8; i ++)
{
int sum = 0;
for(k = 2*i; k >= i; k --)
{
sum += pow(2,k);
}
num[i] = sum;
}
while(scanf("%d",&n)!=EOF)
{
max = -inf;
for(i = 0; i < 8; i ++)
{
if(n%num[i] == 0)
{
if(num[i] > max)
max = num[i];
}
}
printf("%d\n",max);
}
return 0;
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: