BD String

Accepts: 388
Submissions: 1164
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
Problem Description

众所周知,度度熊喜欢的字符只有两个:B和D。

今天,它发明了一种用B和D组成字符串的规则:

S(1)=BS(1)=BS(1)=B

S(2)=BBDS(2)=BBDS(2)=BBD

S(3)=BBDBBDDS(3)=BBDBBDDS(3)=BBDBBDD

…

S(n)=S(n−1)+B+reverse(flip(S(n−1))S(n)=S(n-1)+B+reverse(flip(S(n-1))S(n)=S(n−1)+B+reverse(flip(S(n−1))

其中,reverse(s)reverse(s)reverse(s)指将字符串翻转,比如reverse(BBD)=DBBreverse(BBD)=DBBreverse(BBD)=DBB,flip(s)flip(s)flip(s)指将字符串中的BBB替换为DDD,DDD替换为BBB,比如flip(BBD)=DDBflip(BBD)=DDBflip(BBD)=DDB。

虽然度度熊平常只用它的电脑玩连连看,这丝毫不妨碍这台机器无与伦比的运算速度,目前它已经算出了S(21000)S(2^{1000})S(2​1000​​)的内容,但度度熊毕竟只是只熊,一次读不完这么长的字符串。它现在想知道,这个字符串的第LLL位(从1开始)到第RRR位,含有的BBB的个数是多少?

Input

第一行一个整数TTT,表示T(1≤T≤1000)T(1 \leq T \leq 1000)T(1≤T≤1000) 组数据。

每组数据包含两个数LLL和R(1≤L≤R≤1018)R(1 \leq L \leq R \leq 10^{18})R(1≤L≤R≤10​18​​) 。

Output

对于每组数据,输出S(21000)S(2^{1000})S(2​1000​​)表示的字符串的第LLL位到第RRR位中BBB的个数。

Sample Input
3
1 3
1 7
4 8
Sample Output
2
4
3

很好的解释http://www.cnblogs.com/chen9510/p/5515247.html
 1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<stdlib.h>
5 #include<string.h>
6 #include<queue>
7 #include<stack>
8 using namespace std;
9 typedef long long LL;
10 LL ans[66];
11 LL bns[66];
12 LL ask(LL n);
13 int main(void)
14 {
15 LL i,j,k;
16 ans[1]=1;
17 LL ak=2;
18 bns[1]=1;
19 for(i=2; i<=60; i++)
20 {
21 ak*=2;
22 ans[i]=ans[i-1]*2;
23 bns[i]=ak-1;
24 }
25 LL n,m;
26 int s;
27 cin>>s;
28 for(i=0; i<s; i++)
29 {
30 scanf("%lld %lld",&n,&m);
31 printf("%lld\n",ask(m)-ask(n-1));
32 }
33 return 0;
34 }
35 LL ask(LL n)
36 {
37 int i;
38 LL sum=0;
39 if(n==0)return 0;
40 for(i=1; i<=60; i++)
41 {
42 if(bns[i]>=n)
43 break;
44 }
45 if(n==bns[i])
46 {
47 return ans[i];
48 }
49 else
50 {
51 LL cc=n-bns[i-1];
52 return cc+ask(2*bns[i-1]-n+1);
53 }
54 }


BD String的更多相关文章

  1. hdu-5694 BD String(分治)

    题目链接: BD String Time Limit: 2000/1000 MS (Java/Others)     Memory Limit: 65536/65536 K (Java/Others) ...

  2. HDU 5694 BD String 迭代

    BD String 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5694 Description Problem Description 众所周知, ...

  3. HDU 5694——BD String——————【递归求解】

    BD String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  4. E - BD String

    众所周知,度度熊喜欢的字符只有两个:B和D. 今天,它发明了一种用B和D组成字符串的规则: S(1)=B S(2)=BBD S(3)=BBDBBDD - S(n)=S(n−1)+B+reverse(f ...

  5. 2016"百度之星" - 初赛(Astar Round2A)1005 BD String(HDU5694)——找规律、字符串对称、分治

    分析:按照题目所给的意思每次处理得到的新的字符串都是具有高度对称性的,举个例子,如题目所给的第三个字符串,最中间的是B然后两边分散开去,一边是B的话另外一边关于这个中心对称的那个位置一定是D,反过来同 ...

  6. HDU 5694 BD String 递归暴力

    http://blog.csdn.net/angon823/article/details/51484906 #include <cstdio> #include <iostream ...

  7. BD string 百度之星初赛的题目 数学

    http://acm.hdu.edu.cn/showproblem.php?pid=5694 可以说这道题目挺考验思维含量的吧 首先,这个和数位dp是差不多的方法,计算cal(l)-cal(l-1): ...

  8. Lua基础之字符串(string)

    1,计算字符串长度 2,返回字符串s的n个拷贝 3,返回字符串全部字母大写 4,返回字符串全部字母小写 5,返回一个类似printf的格式化字符串 6,根据下标截取字符串 7,在字符串中查找 8,在字 ...

  9. lua string 库

    --lua中字符串索引从前往后是1,2,……,从后往前是-1,-2……. --string库中所有的function都不会直接操作字符串,只返回一个结果. ---------------------- ...

随机推荐

  1. 作为Java技术面试官,我如何深挖候选人的技能

    作为Java资深技术面试官,首先我感觉有必要讲解"面试官深挖问题"的动机,在了解动机的前提下,大家才能更好地准备面试.面试官为什么要在一个点上深挖?两大目的.   1 首先是通过深 ...

  2. A Child's History of England.38

    CHAPTER 12 ENGLAND UNDER HENRY THE SECOND PART THE FIRST Henry Plantagenet, when he was but [only] t ...

  3. Sharding-JDBC 实现水平分表

    1.搭建环 (1) 技术: SpringBoot2.2.1+ MyBatisPlus + Sharding-JDBC + Druid 连接池(2)创建 SpringBoot 工程

  4. 【JAVA开发】浅析双亲委派机制

    双亲委派机制存在的意义 双亲委派只是一种说法,个人觉得叫单亲委派更合适,因为向上传递的父类只有一个,估计只是翻译过来的,形成的一种习惯,大家可以当做单亲委派 四种加载器都是用于类的加载,只是加载的对象 ...

  5. mybatis-plus解析

    mybatis-plus当用lambda时bean属性不要以is/get/set开头,解析根据字段而不是get/set方法映射

  6. 视频框架 Vitamio使用

    转自http://blog.csdn.net/u010181592/article/category/5893483 1.在https://github.com/yixia/VitamioBundle ...

  7. Local Classes in C++

    A class declared inside a function becomes local to that function and is called Local Class in C++. ...

  8. 侵入式&非侵入式

    侵入式设计 引入了框架,对现有的类的结构有影响:即需要实现或继承某些特定类. 例如:Struts框架 非侵入式设计 引入了框架,对现有的类结构没有影响. 例如:Hibernate框架 / Spring ...

  9. react-native环境搭建完后,用genymotion运行出错的处理方法

    以下方法是争对react-native  0.63版本的 出错提示如下: 模拟器点击reload后,如下提示: 找了网上很多方法,很多都是旧版本的bug处理的方法,没有用,后面经过摸索发现,原来原因是 ...

  10. java代码从出生到执行的过程浅析

    阅读<深入理解java虚拟机 第二版 JVM高级特性与最佳实践> - jdk版本为1.6 1.什么是编译型语言.解释型语言 解释型语言:源代码不是直接翻译成机器语言,而是先翻译成中间代码, ...