题目背景
注意:这 不 是 数位&*!@#(dp)!#模?>.\版*题!@$=@。
题目描述
对于一个正整数 n,令 n 在二进制下从最低位到最高位的数位依次为 n0,n1,…,nk,例如,若 n=11,则 k=3,n0=1,n1=1,n2=0,n3=1。
让 n 的 权值 f(n) 表示为 i=0∑k[imod2=1]ni−i=0∑k[imod2=0]ni。对于一个正整数 n,它被称作是 好的 当且仅当 ∣f(n)∣ 是 3 的倍数。
给出 L,R,请你求出满足 L≤n≤R 的 好的 n 的个数。
输入格式
本题单个测试点内有多组数据。
第一行一个整数 T,表示数据组数。
接下来 T 行,每行两个整数 L,R 描述一组数据。
输出格式
共 T 行,每行一个整数表示答案。
样例
样例解释
在 [4,7] 之间的数中只有 6 满足 ∣f(n)∣=0 是 3 的倍数。
数据规模与约定
本题采用捆绑测试。
- Subtask 0(13 pts):R≤10。
- Subtask 1(20 pts):R≤3×103。
- Subtask 2(20 pts):R≤5×105。
- Subtask 3(47 pts):无特殊限制。
对于所有数据,1≤L≤R≤1018,1≤T≤2×104。