ZOJ 3436 July Number(DFS)
题意 把一个数替换为这个数相邻数字差组成的数 知道这个数仅仅剩一位数 若最后的一位数是7 则称原来的数为 July Number 给你一个区间 求这个区间中July Number的个数
从7開始DFS 位数多的数总能由位数小的数推出
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6;
int july[N], n;
set<int> ans; int pw[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};
//剩余长度, 当前位要填的数,通过什么数来搜索, 路径
void dfs(int len, int d, int bas, int cur)
{
if(d < 0 || d > 9) return; //要填的数不合法
if(!len)
{
july[n++] = cur * 10 + d;
return;
}
int k = pw[len - 1];
dfs(len - 1, d - bas / k, bas % k, cur * 10 + d);
dfs(len - 1, d + bas / k, bas % k, cur * 10 + d);
} int main()
{
ans.insert(7);
set<int>::iterator it;
for(int l = 2; l < 10; ++l)
{
n = 0;
for(it = ans.begin(); it != ans.end(); ++it)
for(int i = 1; i < 10; ++i)
dfs(l - 1, i, *it, 0);
for(int i = 0; i < n; ++i) ans.insert(july[i]);
//printf("%d\n", ans.size());
} int a, b = n = 0;
for(it = ans.begin(); it != ans.end(); ++it)
july[n++] = *it;
while(~scanf("%d%d", &a, &b))
printf("%d\n", upper_bound(july, july + n, b) - lower_bound(july, july + n, a)); return 0;
}
July Number
Time Limit: 2 Seconds Memory Limit: 65536 KB
The digital difference of a positive number is constituted by the difference between each two neighboring digits (with the leading zeros omitted). For example the digital difference of
1135 is 022 = 22. The repeated digital difference, or differential root, can be obtained by caculating the digital difference until a single-digit number is reached. A number whose differential root is 7 is also called July Number. Your job is to tell how
many July Numbers are there lying in the given interval [a, b].
Input
There are multiple cases. Each case contains two integers a and b. 1 ≤ a ≤ b ≤ 109.
Output
One integer k, the number of July Numbers.
Sample Input
1 10
Sample Output
1
Author: HE, Ningxu
Contest: ZOJ Monthly, November 2010
ZOJ 3436 July Number(DFS)的更多相关文章
- [递推+dfs]ZOJ 3436. July Number
题目大意: 将一个数字的相邻两位的差(的绝对值)组成一个新的数字.不断反复.假设最后得到7,就称这个数为July Number,比方9024 – 922 – 70 – 7. 题目要求1e9范围内给定区 ...
- UVA10624 - Super Number(dfs)
题目:UVA10624 - Super Number(dfs) 题目大意:给你n和m要求找出这种m位数,从第n位到第m位都满足前i位是能够被i整除,假设没有这种数,输出-1.有多个就输出字典序最小的那 ...
- 思维+multiset ZOJ Monthly, July 2015 - H Twelves Monkeys
题目传送门 /* 题意:n个时刻点,m次时光穿梭,告诉的起点和终点,q次询问,每次询问t时刻t之前有多少时刻点是可以通过两种不同的路径到达 思维:对于当前p时间,从现在到未来穿越到过去的是有效的值,排 ...
- ZOJ - 3816 Generalized Palindromic Number dfs
Generalized Palindromic Number Time Limit: 2 Seconds Memory Limi ...
- poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)
Sum It Up Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Sub ...
- ZOJ 1008 Gnome Tetravex(DFS)
Gnome Tetravex Time Limit: 10 Seconds Memory Limit: 32768 KB Hart is engaged in playing an inte ...
- ZOJ 2412 Farm Irrigation(DFS 条件通讯块)
意甲冠军 两个农田管内可直接连接到壳体 他们将能够共享一个水源 有11种农田 管道的位置高于一定 一个农田矩阵 问至少须要多少水源 DFS的连通块问题 两个相邻农田的管道能够直接连接的 ...
- UVA11882-Biggest Number(DFS+最优化剪枝)
Problem UVA11882-Biggest Number Accept: 177 Submit: 3117Time Limit: 1000 mSec Memory Limit : 1 ...
- LeetCode Letter Combinations of a Phone Number (DFS)
题意 Given a digit string, return all possible letter combinations that the number could represent. A ...
随机推荐
- XILINX XST综合的选项的含义
所谓综合,就是将HDL语言.原理图等设计输入翻译成由与.或.非门和RAM.触发器等基本逻辑单元的逻辑连接(网表),并根据目标和要求(约束条件)优化所生成的逻辑连接,生成EDF文件.完成了输入.仿真以及 ...
- 【Android】20.2 视频播放
分类:C#.Android.VS2015: 创建日期:2016-03-11 一.简介 本节例子和上一节的音频播放例子相似,也是最简单的示例,比如并没有考虑视频播放过程中电话打入的情况,也没有考虑复杂的 ...
- java.net.Socket/java.net.ServerSocket-TCP Socket编程
TCP 的 Java 支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP 协议族有 IP 协议.TCP 协议和 ...
- nyoj138 哈希的简单应用(查找)
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...
- mac下两种很常见的button的xib设置
第一种,双变button.就是有两种状态的button:普通态和点击选中态. 第二种,点变button.有两种状态:普通态和mouseDown的态,mouseUp时同普通态.
- python常用的十进制、16进制、字符串、字节串之间的转换
进行协议解析时,总是会遇到各种各样的数据转换的问题,从二进制到十进制,从字节串到整数等等 废话不多上,直接上例子 整数之间的进制转换: 10进制转16进制: hex(16) ==> 0x10 ...
- 你应该知道的Virtual Studio
最近,在网上看到一篇关于VS2008的一些提示,可以提高开发效率,我把它翻译过来,当然里面也有很多自己的想法,分享一下,大家可以择有用的提示而用之. 参考:每个开发者都应该知道的提示和诀窍 提示一:拷 ...
- c++ 使用vs2010调用 win32api
以前读书时都是用vc6.0.后来学c#用vs.装系统只装了vs2010.今天用vs2010写c++程序.发现有点陌生.就总结下,免得以后忘记. 首先用vs2010选择c++语言.新建一个win32控制 ...
- JVM致命错误日志(hs_err_pid.log)分析(转载)
当jvm出现致命错误时,会生成一个错误文件 hs_err_pid<pid>.log,其中包括了导致jvm crash的重要信息,可以通过分析该文件定位到导致crash的根源,从而改善以保证 ...
- show global status和show variables mysql 优化
mysql> show global status; 可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%'; 一.慢查询 mysql> ...