题目:B4357 [GESP202506 二级] 幂和数
题目描述
对于正整数 n,如果 n 可以表为两个 2 的次幂之和,即 $n = 2^x + 2^y$(x, y 均为非负整数),那么称 n 为幂和数。
给定正整数 l, r,请你求出满足 $l \leq n \leq r$ 的整数 n 中有多少个幂和数。
输入格式
一行,两个正整数 l, r,含义如上。
输出格式
输出一行,一个整数,表示 l, r 之间幂和数的数量。
输入输出样例
输入 #1
2 8
输出 #1
6
输入 #2
10 100
输出 #2
20
说明/提示
对于所有测试点,保证 $1 \leq l \leq r \leq 10^4$。
参考代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int l, r, ans = 0;
cin >> l >> r;
for (int x = 1; x <= r; x *= 2) {
for (int y = x; y <= r; y *= 2) {
if (x + y >= l && x + y <= r) {
ans++;
}
}
}
cout << ans;
return 0;
}

