Nothing

[JRKSJ R6] Nothing

题目背景

【此处应有图】

题目描述

我们定义 f ( x ) f(x) f(x) 表示 x x x 2 2 2 进制下最低的 1 1 1 的位置(你需要注意,二进制下的最低位是第 $0 $ 位)。以下是其在 C++ 语言中的代码(未考虑数据类型造成的问题):

int f(int x){
	int ans = 0;
	while (x % 2 == 0){
		x /= 2;
		ans += 1;
	}
	return ans;
}

共有 T T T 组询问,每组询问给定区间 [ l , r ] [l,r] [l,r],求有多少个 i ∈ [ l , r ] i\in [l,r] i[l,r] 使得 f ( i ) < f ( i + 1 ) f(i)< f(i+1) f(i)<f(i+1)

输入格式

第一行一个正整数 T T T
接下来 T T T 行每行两个正整数 l , r l,r l,r 表示一次询问。

输出格式

T T T 行每行一个整数表示答案。

样例 #1

样例输入 #1

2
3 5
15 20

样例输出 #1

2
3

提示说明

在这里插入图片描述

数据规模

本题采用捆绑测试。

Subtask \text{Subtask} Subtask T ≤ T\le T特殊限制 Score \text{Score} Score
1 1 1 1 0 5 10^5 105 l = r l=r l=r 10 10 10
2 2 2 1 0 4 10^4 104 r − l ≤ 1 0 3 r-l\le10^3 rl103 30 30 30
3 3 3 1 0 5 10^5 105 r ≤ 1 0 6 r\le10^6 r106 20 20 20
4 4 4 1 0 5 10^5 105 40 40 40

对于 100 % 100\% 100% 的数据, 1 ≤ T ≤ 1 0 5 1\le T\le 10^5 1T105 1 ≤ l ≤ r ≤ 1 0 18 1\le l\le r\le 10^{18} 1lr1018

代码内容

// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

ll find(ll l,ll r)
{
    ll ans=(r-l+1)/2;
    if(l%2==1&&r%2==1) ans++;
    return ans;
}

int main()
{
    ll t;
    cin>>t;
    while(t--)
    {
        ll l,r;
        cin>>l>>r;
        cout<<find(l,r)<<endl;
    }
    
    return 0;
}
  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pretty Boy Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值