#include<bits/stdc++.h>
using namespace std;
int ans[31][10];
void init(){
	for(int i=0;i<=9;i++)ans[1][i]=1;
	for(int i=1;i<=20;i++){//0~99...(i个9)
		for(int j=0;j<=9;j++){//最后一个是j
			for(int k=j;k<=9;k++){
				ans[i][j]+=ans[i-1][k];
			}
		}
	}
}
int getsum(int k){
	if(!k)return 1;
	int num[30]={};
	int tk=k,sz=0;
	while(tk){
		num[++sz]=tk%10;
		tk/=10;
	}
	if(!sz)sz++;
	int sum=0,maxn=0;
	for(int i=sz;i>=1;i--){
		if(num[i]<maxn)break;
		for(int j=maxn;j<num[i];j++)sum+=ans[i][j];
		maxn=num[i];
		if(i==1)sum++;
	}
	return sum;
}
int main(){
	init();
	int a,b;
	while(cin>>a>>b){
		cout<<getsum(b)-getsum(a-1)<<endl;
	}
}

0 comments

No comments so far...

Information

ID
166
Time
1000ms
Memory
256MiB
Difficulty
6
Tags
# Submissions
28
Accepted
10
Uploaded By