【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
output
input
output
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; }
相关文章推荐
- 【Educational Codeforces Round 33】 B. Beautiful Divisors (枚举)
- Educational Codeforces Round 33 (Rated for Div. 2)
- Educational Codeforces Round 33 (Rated for Div. 2) F. Subtree Minimum Query (线段树)
- 【Educational Codeforces Round 33 A】Chess For Three
- Educational Codeforces Round 33 (Rated for Div. 2)
- 【Educational Codeforces Round 33 B】Beautiful Divisors
- Educational Codeforces Round 33 (Rated for Div. 2) C
- Educational Codeforces Round 33 893D - Credit Card
- Educational Codeforces Round 33 E. Counting Arrays
- Educational Codeforces Round 33 (Rated for Div. 2)【C】【并查集】
- Educational Codeforces Round 33 (Rated for Div. 2)
- Educational Codeforces Round 33 (Rated for Div. 2) D. Credit Card
- 【Educational Codeforces Round 33 C】 Rumor
- Educational Codeforces Round 33
- codeforces Educational Codeforces Round 33 (Rated for Div. 2)B
- 【Educational Codeforces Round 33 D】Credit Card
- Educational Codeforces Round 33 (Rated for Div. 2) A - Chess For Three
- Educational Codeforces Round 33 (Rated for Div. 2) B - Beautiful Divisors
- Educational Codeforces Round 33 C. Rumor
- Educational Codeforces Round 33