程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Codeforces 484A Bits(貪心)

Codeforces 484A Bits(貪心)

編輯:C++入門知識

Codeforces 484A Bits(貪心)


題目鏈接:Codeforces 484A Bits

題目大意:給定區間l,r,找到一個數x,保證x在區間上,並且要求x的bitcount盡量大的前提下數值盡量小。

解題思路:默認x為全1的二進制數,每次從最高為判斷,看最高位的1變為0後大於r,就將該為變成0;落在區間上則即

為要照的答案;小於l則表示該為不能為0.

#include 
#include 
#include 
#include 

using namespace std;
typedef long long ll;
ll l, r;

int main () {
    int cas;
    scanf("%d", &cas);
    while (cas--) {
        scanf("%lld%lld", &l, &r);
        ll ans = (1LL<<62)-1;

        for (int i = 61; i >= 0; i--) {
            if (r >= ans && ans >= l)
                break;
            if ((ans^(1LL<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved