【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
output
input
output
#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,问最大美丽因子是多少。
思路:
从大到小枚举美丽数字,看能不能被整除即可。
*/
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 Educational Codeforces Round 33 C 893C Rumor(并查集)
- Educational Codeforces Round 22 B. The Golden Age(枚举)
- 【Educational Codeforces Round 33 C】 Rumor
- Educational Codeforces Round 33 (Rated for Div. 2) C
- Educational Codeforces Round 33 D. Credit Card
- codeforces Educational Codeforces Round 33 (Rated for Div. 2)B
- Educational Codeforces Round 33 (Rated for Div. 2) D题. Credit Card(贪心)
- Educational Codeforces Round 4:(612A:枚举、 612B:水 、 612C:stack、612D:sort )
- 【Educational Codeforces Round 33 D】Credit Card
- Educational Codeforces Round 33 (Rated for Div. 2) A-C题解
- Educational Codeforces Round 33 (Rated for Div. 2) 题解
- Educational Codeforces Round 33 (Rated for Div. 2) F. Subtree Minimum Query (线段树)
- Educational Codeforces Round 32 E 折半枚举
- 【 Educational Codeforces Round 33 A】Chess For Three
- Educational Codeforces Round 33 (Rated for Div. 2)
- Educational Codeforces Round 33 (Rated for Div. 2)A-F
- Educational Codeforces Round 22-B. The Golden Age-暴力枚举+map
- Educational Codeforces Round 33
- Educational Codeforces Round 33 (Rated for Div. 2)
- Educational Codeforces Round 33 (Rated for Div. 2) F - Subtree Minimum Query