18113 Secret Book of Kungfu 按位DFS
http://acm.scau.edu.cn:8000/uoj/mainMenu.html
18113 Secret Book of Kungfu
该题有题解
时间限制:1000MS 内存限制:65535K
提交次数:0 通过次数:0
题型: 编程题 语言: 不限定
Description
- Uncle Big is acknowledged as a master of kung fu. But he doesn't think so. He thinks that there are many other unknown
- experts in the world. So Uncle Big devotes all his life to find the highest realm of kung fu.
- During a chance, Uncle Big discover a secret book of kungfu in a cave. But the book is broken and losts many pages. What's
- worst, there's only some numbers writted on the book. After studying the book years and years, Uncle Big discover that all
- this numbers have a common feature that, the decimal notation of a number is a substring of its binary notation. So Uncle
- Big want to restore the book, in order to better understand it. Before doing this, Uncle Big has to know how many such numbers
- between l and r (inclusive).
- But now Uncle Big is so exciting because of this discovering, and has gone to race boat. Can you help him?
输入格式
- The input file begins with an integer T (T <= 10000) in one row indicating the number of test case. Then T test cases
- follows.
- Each test case contains one line with two non-negetive integer l and r (l <= r <= 1000000000000000(1e15) ).
输出格式
- For each test case, print one line with a integer as answer.
输入样例
- 1
- 1 1000
输出样例
- 8
提示
- "1", "0", "10", "01", "101" are the substring of "101", but "11", "00" are not.
考虑按位DFS后再暴力判断,然后发现总数只有283个,记得加上0,就284个。打个表二分查找就好。
dfs数字的话,一般就是dfs(cur * 10 + 0),这个数位进位后,然后加上想要的数字
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <cmath>
- #include <algorithm>
- #define IOS ios::sync_with_stdio(false)
- using namespace std;
- #define inf (0x3f3f3f3f)
- typedef long long int LL;
- #include <iostream>
- #include <sstream>
- #include <vector>
- #include <set>
- #include <map>
- #include <queue>
- #include <string>
- LL L, R;
- int ans;
- char str_bin[];
- char num[];
- int lenstr;
- void bin(LL n) {
- if (n / ) bin(n / );
- str_bin[++lenstr] = n % + '';
- }
- LL biao[ + ];
- int lenbiao;
- void dfs(LL cur) {
- if (cur >= L && cur <= R) {
- lenstr = ;
- bin(cur);
- int k = ;
- LL t = cur;
- while (t / > ) {
- num[++k] = t % + '';
- t /= ;
- }
- num[++k] = t + '';
- num[k + ] = '\0';
- str_bin[lenstr + ] = '\0';
- // cout << str_bin + 1 << endl;
- reverse(num + , num + + k);
- // cout << num + 1 << endl;
- // cout << endl;
- char *p = strstr(str_bin + , num + );
- if (p != NULL)
- biao[++lenbiao] = cur;
- }
- if (cur > R) return;
- dfs(cur * );
- dfs(cur * + );
- }
- void work() {
- cin >> L >> R;
- if (L > R) swap(L, R);
- int posR = lower_bound(biao + , biao + + lenbiao, R) - biao;
- int posL = lower_bound(biao + , biao + + lenbiao, L) - biao;
- if (biao[posL] == L && biao[posR] == R) {
- cout << posR - posL + << endl;
- } else if (biao[posL] == L && biao[posR] != R) {
- cout << posR - posL << endl;
- } else if (biao[posL] != L && biao[posR] == R) {
- cout << posR - posL + << endl;
- } else {
- cout << posR - posL << endl;
- }
- }
- void init() {
- biao[++lenbiao] = ;
- L = ;
- R = 1e15L;
- dfs();
- sort(biao + , biao + + lenbiao);
- }
- int main() {
- #ifdef local
- freopen("data.txt","r",stdin);
- #endif
- IOS;
- init();
- int t;
- cin >> t;
- while (t--) work();
- return ;
- }
18113 Secret Book of Kungfu 按位DFS的更多相关文章
- hdoj 1342 Lotto【dfs】
Lotto Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- hdu 5676 ztr loves lucky numbers(dfs+离线)
Problem Description ztr loves lucky numbers. Everybody knows that positive integers are lucky if the ...
- POJ 2676 Sudoku (数独 DFS)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14368 Accepted: 7102 Special Judg ...
- HDU 5676 ztr loves lucky numbers【DFS】
题目链接; http://acm.hdu.edu.cn/showproblem.php?pid=5676 题意: 由4和7组成的且4和7出现次数相同的数称为幸运数字,给定n,求不大于n的最大幸运数字. ...
- codeforces 686C C. Robbers' watch(dfs)
题目链接: C. Robbers' watch time limit per test 2 seconds memory limit per test 256 megabytes input stan ...
- CodeForces 686C-Robbers' watch
题意: 一个电子手表的示数是7进制的,现在告诉你一天有多少小时和一小时有多少分钟,问你一天里有多少个时刻,这个表上显示的数字各不相同. 分析: 先找出表上有多少位数字,再按位dfs,看最后得到的数是否 ...
- 【一天一道LeetCode】#299. Bulls and Cows
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 You are ...
- 防盗链之URL参数签名
一.概述 传统的 IP 禁用.referer 防盗链.User-Agent 防盗链.地区访问控制等防盗链措施已经无法完全满足用户要求,所以开发出URL参数签名方式来防盗链 二.实现 Token防盗链是 ...
- 防盗链之URL参数签名 总结
一.概述 传统的 IP 禁用.referer 防盗链.User-Agent 防盗链.地区访问控制等防盗链措施已经无法完全满足用户要求,所以开发出URL参数签名方式来防盗链 二.实现 Token防盗链是 ...
随机推荐
- html5--5-6 绘制圆/弧
html5--5-6 绘制圆/弧 学习要点 掌握arc() 方法创建圆弧/曲线(用于创建圆或部分圆) 矩形的绘制方法 rect(x,y,w,h)创建一个矩形 strokeRect(x,y,w,hx,y ...
- codevs 1143 纪念品分组
1143 纪念品分组 2007年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 题目描述 Description ...
- ubuntu16.04 ROS安转及RVIZ启动
1.软件中心配置 首先打开软件和更新对话框,打开后按照下图进行配置(确保你的"restricted", "universe," 和 "multiver ...
- weex 安装过程中遇到的坑
安装 然后 注意: 在weex-toolkit1.0.8版本后添加了npm5规范的npm-shrinkwrap.json用于锁定包依赖,故npm版本<5的用户需要通过npm i npm@late ...
- bzoj1941
KD-tree **了这道题 这个估价函数好鬼畜,把min打成max... 关于min的估价函数非常鬼畜,具体我也不知道为什么. #include<bits/stdc++.h> using ...
- Python的中文处理
一.使用中文字符 在python源码中如果使用了中文字符,运行时会有错误,解决的办法是在源码的开头部分加入字符编码的声明,下面是一个例子: #!/usr/bin/env python # -*- co ...
- system(“pause”)和getchar()
大家都知道system(“PAUSE”)可以让C程序在运行结束之前暂停运行.用system(“PAUSE”)可以解决运行程序一闪而过,看不到输出结果的问题.有程序员会用system(“PAUSE”)只 ...
- 读取关联数据(EF Core2.1.1)
对象-关系映射框架比如EF有三种 方式使用 模型中的导航属性来加载关联数据. 一..Lazy Loading.(关联数据在访问导航属性时被透明的加载,不需要特别的代码,自动的加载) 当一个实体第一次读 ...
- TypeScript完全解读(26课时)_12.TypeScript完全解读-高级类型(1)
12.TypeScript完全解读-高级类型(1) 高级类型中文网的地址:https://typescript.bootcss.com/advanced-types.html 创建新的测试文件 ind ...
- PhpStorm插件之CodeGlance
安装插件 File->Setting->Pluugins 搜索 CodeGlance 如何使用 安装完插件后,RESTART IDE,随便打开一个文件都可看到效果