题解 | #光之屏障#

光之屏障

https://ac.nowcoder.com/acm/contest/11219/B

B. 光之屏障

预处理一下,我们知道 int 范围也就 23112^{31}-1,然后把所有是 2k2^kkk 为整数,且 0k310\le k \le 31)的数全部扔到 vv 里去。那么这个 vv 大概长这样 {1,2,4,8,16,}\{1, 2, 4, 8, 16, \cdots\}

对于每一次询问,我们直接找 vva\ge ab\le b 的数就行了。

#include <bits/stdc++.h>
using namespace std;
vector <int> v;
int main() {
  int t;
  cin >> t;
  int a, b, q = 1;
  for (int i = 1; i <= 32; ++i) {
    v.push_back(q);
    q *= 2;
  }
  while (t--) {
    bool f = 0;
    cin >> a >> b;
    for (int i = 0; i < v.size(); ++i) {
      if (v[i] >= a && v[i] <= b) {
        cout << v[i] << endl;
        f = 1;
        break;
      }
    }
    if (!f) cout << "-1\n";
  }
}
全部评论

相关推荐

2025-12-21 21:22
安徽农业大学 运营
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
实习简历求拷打
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务