dfs打表 C. Classy Numbers

Posted liuyongliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dfs打表 C. Classy Numbers相关的知识,希望对你有一定的参考价值。

C. Classy Numbers

C. Classy Numbers
time limit per test
3 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Let‘s call some positive integer classy if its decimal representation contains no more than 33 non-zero digits. For example, numbers 44, 200000200000, 1020310203 are classy and numbers 42314231, 102306102306, 72774200007277420000 are not.

You are given a segment [L;R][L;R]. Count the number of classy integers xx such that LxRL≤x≤R.

Each testcase contains several segments, for each of them you are required to solve the problem separately.

Input

The first line contains a single integer TT (1T1041≤T≤104) — the number of segments in a testcase.

Each of the next TT lines contains two integers LiLi and RiRi (1LiRi10181≤Li≤Ri≤1018).

Output

Print TT lines — the ii-th line should contain the number of classy integers on a segment [Li;Ri][Li;Ri].

/***********************************************/
ll a,b,n;
vector<ll>V;

void dfs(ll x,int oo,int len)
{
	V.push_back(x);
	if(len==18) return ;
	dfs(x*10,oo,len+1);
	if(oo<3)
	for(int i=1;i<=9;i++) dfs(x*10+i,oo+1,len+1);
}

int main() 
{
	for(ll i=1;i<=9;i++) {
		dfs(i,1,1);
	}
	V.push_back(1e18);
	sort(V.begin(),V.end());
    scl(n);
    while(n--)
    {
    	ll ans=0;
    	scl2(a,b);
		ll l=lower_bound(V.begin(),V.end(),a)-V.begin();
		ll r=upper_bound(V.begin(),V.end(),b)-V.begin();
		cout<<r-l<<endl;
	}
    return 0;
}

  








以上是关于dfs打表 C. Classy Numbers的主要内容,如果未能解决你的问题,请参考以下文章

C. Classy Numbers cf edu round50

Educational Codeforces Round 50 (Rated for Div. 2) C. Classy Numbers

Codeforces 1036C Classy Numbers DFS

DFS打表Lattice Animals

Lucky Sum (dfs打表)

[打表] aw3734. 求和(打表+dfs+区间交集+aw周赛006_2)