-
Problem - B - Codeforces
codeforces.com
풀이
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#include <bits/stdc++.h>#define endl "\n"#define ooop(i, n) for(int i = 0; i < n; i++)#define loop(i, n) for(int i = 1; i <= n; i++)#define all(v) (v).begin(), (v).end()using namespace std;typedef long long ll;typedef pair<int, int> pi;typedef pair<ll, ll> pl;vector<int> two;void make_two(vector<int>& two){int t = 1;ooop(i, 19){two.emplace_back(t);t *= 2;}return;}int zero_cnt(int bit, int num){int cycle = two[bit+1];int q = num/cycle;int r = num%cycle;int ret = two[bit]*q;if(r < two[bit]){ret += r+1;return ret;}else{ret += two[bit];return ret;}}int main(){ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);int t;cin >> t;make_two(two);while(t--){int l, r;cin >> l >> r;int minval = INT_MAX;ooop(bit, 18){int tmp = zero_cnt(bit, r) - zero_cnt(bit, l-1);if(tmp < minval) minval = tmp;}cout << minval << endl;}return 0;}cs'코드포스' 카테고리의 다른 글
1303-B, *1400 (0) 2021.12.26 1615-C (0) 2021.12.25 1615-A (0) 2021.12.25 1301-B, *1500 (0) 2021.12.24 1301-C, *1700 (0) 2021.12.24