题目描述:
集合A={1,2,…,n}, 集合B为A子集,对于B中任意一个元素x,2x均不在集合B中。求集合B最多能有多少个元素。
输入格式
一个整数n (1≤n≤ 109)。
输出格式
以一个整数,表示集合B最多的元素个数。
Sample Input
100
Sample Output
67
解析:
这道题……算了,这题我用特殊方法计算的,比较奇怪的思路,好像说不清楚……但是,应该可以,有问题请指点,谢谢。
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
long n, m, i, num;
cin >> n;
long total = (n + 1) / 2;
for(i = 1; i <= n / 4; i += 2) {
num = 0;
m = i;
while(m <= n / 2){
num ++;
m *= 2;
}
total += num / 2;
}
cout << total << endl;
return 0;
}