BestCoder Round #31 B题

beautiful number

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 136    Accepted Submission(s): 78

Problem Description

Let A=∑ni=1ai?10n?i(1≤ai≤9)(n is
the number of A‘s
digits). We call A as
“beautiful number” if and only if a[i]≥a[i+1] when 1≤i<n and a[i]mod a[j]=0 when 1≤i≤n,i<j≤n(Such
as 931 is a "beautiful number" while 87 isn‘t).

Could you tell me the number of “beautiful number” in the interval [L,R](including
L and R)?

Input

The fist line contains a single integer T(about
100), indicating the number of cases.

Each test case begins with two integers L,R(1≤L≤R≤109).

Output

For each case, output an integer means the number of “beautiful number”.

Sample Input

2
1 11
999999993 999999999

Sample Output

10
2

前几天刚学的DFS,这题算是比较简单的,虽然还是看别人的代码了= =。看到有很多人离线暴力出来然后打表的,也是机智。

因为一个y没有用long longWA了好几次,看来以后再做这种题就全部变量用long long吧。

代码如下,解释在注释里:

#include "iostream"
#include "algorithm"
using namespace std;
__int64 ans,l,r;
void dfs(int x,__int64 y)         //x记录下一位数,y记录这个数
{
    int i;
	if(y>r)
		return ;                  //当这个数超过r时返回
	if(y<=r&&y>=l)
		ans++;
	for(i=1;i<=9;i++)
	{
		if(x%i==0)
		{
			dfs(x/i,y*10+x/i);    //这里返回的是x/i而不是x%i是因为i是小的优先的,
		}                         //即为了下一位数尽可能的大所以用除不用余
	}
}
int main(int argc, char const *argv[])
{
	int i,t;
	scanf("%d",&t);
	getchar();
	while(t--)
	{
		ans=0;
		scanf("%I64d%I64d",&l,&r);
		for(i=1;i<=9;i++)
		    dfs(i,i);
		printf("%I64d\n",ans);
	}
	return 0;
}
时间: 2024-12-20 21:57:03

BestCoder Round #31 B题的相关文章

STL之二分查找:hdu 5178 ( BestCoder Round #31 1001 )

STL包含四种不同的二分查找算法,binary_search    lower_bound  upper_bound   equal_range.他们的作用域是已经排序好的的数组. ★binary_search试图在已排序的[first, last)中寻找元素value.如果找到它会返回true,否则返回false,它不返回查找位置. ★iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素. ★iterat

hdu4931 Happy Three Friends(BestCoder Round#4签到题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4931 Happy Three Friends Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 150    Accepted Submission(s): 128 Problem Description Dong-hao , Grandpa

BestCoder Round #1 第一题 逃生

// 等了好久,BESTCODER 终于出来了..像咋这样的毕业的人..就是去凑凑热闹// 弱校搞acm真是难,不过还是怪自己不够努力// 第一题是明显的拓扑排序,加了了个字典序限制而已// 用优先队列就可以搞定了#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> #include <vector> #include <map>

BestCoder Round #1 第二题 项目管理

// 第二题 我记得很久很久很久以前看过这样的题目,忘记是哪的区域赛了 // 记得有人说和节点度数有关,我记不清了,反正当时完全不懂 // 然后我想了想,估计就是更新节点度数有关,YY出来可能只要更新相邻节点度数更大或更小的就可以了 // 复杂度不知道多少,就是提交了试试,15MS就过了 // 看来就是这样了 // 具体就是求出每个节点度数,然后每次更新时,只要更新与自己相连,但度数比自己大的 // 查询时把度数自己大的节点累加的值加上就可输出,具体看代码比较清楚 // 也就做得来这2题了(见识

Bestcoder Round #31

hdu 5178 求|a[i] - a[j]| <= k (i < j) <i,j>的对数,一开始认为数据不大就直接ans++了,后来结果出来才知道,啊啊啊,too young too simple.总之一个教训 思路:先排序,然后用二分查找寻找a[i] + k 在数组中的位置,然后 ans相加 #include <iostream> #include <cstdio> #include <cmath> #include <cstring&

ACM学习历程—HDU5269 ZYB loves Xor I(位运算 &amp;&amp; dfs &amp;&amp; 排序)(BestCoder Round #44 1002题)

Problem Description Memphis loves xor very musch.Now he gets an array A.The length of A is n.Now he wants to know the sum of all (lowbit(Ai xor Aj) (i,j∈[1,n]) We define that lowbit(x)=2^k,k is the smallest integer satisfied ((x and 2^k)>0)Specially,

BestCoder Round #14 B 题 Harry And Dig Machine 【TSP】

题目:Harry And Dig Machine 哈哈  终于涨边粉色了,不容易呀.顺便写一道题解吧 题意:给一个m*n的矩阵,然后其中最多由10个有值,求总左上角把所有的值都拿上回到左上角的最小步数. 标准的TSP回到原点问题,需要先预处理出图来,然后TSP即可. AC代码: #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <io

从lca到树链剖分 bestcoder round#45 1003

bestcoder round#45 1003 题,给定两个点,要我们求这两个点的树上路径所经过的点的权值是否出现过奇数次.如果是一般人,那么就是用lca求树上路径,然后判断是否出现过奇数次(用异或),高手就不这么做了,直接树链剖分.为什么不能用lca,因为如果有树退化成链,那么每次询问的复杂度是O(n), 那么q次询问的时间复杂度是O(qn) 什么是树链剖分呢? 就是把树的边分成轻链和重链 http://blogsina.com.cn/s/blog_6974c8b20100zc61.htmlh

HDU-5086-Revenge of Segment Tree (BestCoder Round #16)

Revenge of Segment Tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 205    Accepted Submission(s): 83 Problem Description In computer science, a segment tree is a tree data structure for st