题:https://codeforces.com/contest/1245/problem/F

分析:转化为:求区间内满足a&b==0的对数(解释见代码)

  1. ///求满足a&b==0在区间【l,r】的对数
  2. ///推导:区间[2l,2r]可由[l,r]乘3倍得来
  3. ///原因:*2我们可以看成事左移1位,那么这个位置上,对于俩个数来说
  4. /////////可以取0,1 或1,0或0,0才依然满足 a&b==0这个题目条件
  5. /////////这个公式可以用递归推导回溯计算,
  6. /////////当我们回递归到区间为奇数的情况的时候,我们想办法让它变成偶数
  7. /////////假设[a,b]中a是奇数,那么我们就把它弄成a+1,然后加上漏算的部分即可
  8. /////////g(x,y)表示在区间[0,b]中和x满足题目条件的个数
  9. /////////然后漏算的部分就是 (g(a,b)-g(a,a))*2
  10. /////////b为奇数的情况也照样这样分析
  11. /////////完
  12.  
  13. #include<bits/stdc++.h>
  14. using namespace std;
  15. typedef long long ll;
  16. #define pb push_back
  17. ll g(int a,int b){
  18. ll ans=;
  19. ll num=;
  20. for(int i=;i<=b;i<<=){
  21. if(i&b){
  22. b^=i;
  23.  
  24. if(!(a&b))
  25. ans+=1ll<<num;
  26. }
  27. if(!(i&a)){///a在二进制下i位置为0的情况下,num就是计数这种情况的
  28. num++;
  29. }
  30. }
  31. return ans;
  32. }
  33. ll cal(int a,int b){
  34. if(a==)
  35. return *b-+cal(,b);
  36. if(a==b)
  37. return ;
  38. ll ans=;
  39. if(a&){///若左区间的值为奇数
  40. ans+=(g(a,b)-g(a,a))*;///乘2是对数可以互换,然后这个就是剪掉区间缩成偶数时加上漏加的部分,类似于用前缀和算区间和
  41. a++;
  42. }
  43. if(b&){///若右区间的值为偶数
  44. ans+=(g(b-,b)-g(b-,a))*;
  45. b--;
  46. }
  47. return ans+*cal(a/,b/);
  48. }
  49. int main(){
  50. int t;
  51. scanf("%d",&t);
  52. while(t--){
  53. int a,b;
  54. scanf("%d%d",&a,&b);
  55. printf("%I64d\n",cal(a,b+));
  56. }
  57. return ;
  58. }

计算a^b==a+b在(l,r)的对数Codeforces Round #597 (Div. 2)的更多相关文章

  1. Codeforces Round #336 (Div. 2) B. Hamming Distance Sum 计算答案贡献+前缀和

    B. Hamming Distance Sum   Genos needs your help. He was asked to solve the following programming pro ...

  2. Codeforces Round #532 (Div. 2)- C(公式计算)

    NN is an experienced internet user and that means he spends a lot of time on the social media. Once ...

  3. Codeforces Round #114 (Div. 1) B. Wizards and Huge Prize 概率dp

    B. Wizards and Huge Prize Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest ...

  4. Codeforces Round #538 (Div. 2) CTrailing Loves (or L'oeufs?)

    这题明白的意思就是求n!在b进制下的后缀零的个数. 即最大的n!%(b^k)==0的k的值.我们需要将如果要构成b这个数,肯定是由一个个质因子相乘得到的.我们只需要求出b的质因子,然后分析n!中可以组 ...

  5. Codeforces Round #377 (Div. 2) A. Buy a Shovel【暴力/口袋里面有无限枚 10 元和一枚 r 面值的硬币,问最少可以买多少把价值为 k 的铁铲】

    A. Buy a Shovel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  6. Codeforces Round #418 (Div. 2) C. An impassioned circulation of affection

    C. An impassioned circulation of affection time limit per test 2 seconds memory limit per test 256 m ...

  7. Codeforces Round #574 (Div. 2) D1. Submarine in the Rybinsk Sea (easy edition) 【计算贡献】

    一.题目 D1. Submarine in the Rybinsk Sea (easy edition) 二.分析 简单版本的话,因为给定的a的长度都是定的,那么我们就无需去考虑其他的,只用计算ai的 ...

  8. Codeforces Round #333 (Div. 1) C. Kleofáš and the n-thlon 树状数组优化dp

    C. Kleofáš and the n-thlon Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contes ...

  9. Codeforces Round #330 (Div. 1) A. Warrior and Archer 贪心 数学

    A. Warrior and Archer Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/594 ...

随机推荐

  1. 51nod 1267:4个数和为0 哈希

    1267 4个数和为0 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出&qu ...

  2. VS2013 MFC opencv 播放视频

    看网上有很多人用的还是CvvImage类,但是Opencv3.0已经没有CvvImage这个类了.百度得之可以使用以前的类,稍作修改就可以了. 头文件: #pragma once #ifndef CV ...

  3. 18 12 26 css 学习 选择器

    1.标签选择器 标签选择器,此种选择器影响范围大,建议尽量应用在层级选择器中.举例: *{margin:0;padding:0} div{color:red} <div>....</ ...

  4. 递归(VBA实现)

    案列: 给定n个数,取任意g个数之和等于h的组合. 采用递归的方式实现: Option Explicit Dim arr1(1 To 10000, 1 To 1) As String Dim k, g ...

  5. Fedora、SuSE、Redhat、Ubuntu、Centos

    想学Linux,但版本太多了,如Fedora.SuSE.Redhat.Ubuntu等,不免让人眼花缭乱,那么初学者该如何选择呢?也许很多人会不屑的说,Linux不就是个操作系统么.错!Linux不是一 ...

  6. php://filter(文件包含漏洞利用)及php://input

    1. php://filter 文件包含漏洞:https://blog.csdn.net/fageweiketang/article/details/80699051 筛选过滤应用: 1. 字符串过滤 ...

  7. Bugku 加密(持续更新)

    1.滴答~滴 不多说,摩斯密码解密. 2.聪明的小羊 栅栏密码解密. 3.ok Ook解密 4.这不是摩斯密码 brainfuck解码 5.简单加密 凯撒有两种编码脚本,一种是字母26内循环移位,一种 ...

  8. 利用hutool配置发送邮件的问题 及 阿里企业邮箱526 Authentication failure 错误问题

    hutool 中发送邮件的配置的比较简单.可以参考hutool 官方的教程. 个人尝试了qq邮箱发送邮件 和 阿里企业邮箱发送邮件. 主要是配置不一样: 一.qq邮箱 qq邮箱 我的邮箱配置是: # ...

  9. 爬虫防止浏览器防止debug处理

    方式一(基于你会前端,我比较喜欢这种方式) #复制html页面 #复制其中的js,css(css可有可无,如果加css和不加css情况不一样,网页可能做了css反爬处理) #全局搜索debug or ...

  10. Python 中如何自动导入缺失的库?

    在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx'或者ModuleNotFoundError: No modul ...