文件详细信息

下载本文件

本文件的大小为 654 字节。

#include<cstdio>
#include<cstring>
typedef long long ll;
ll a,b;
int c,digits[13],top;
ll f[13][13];
ll dfs(int digit,int limit,int zero,int cnt){
	if(digit==-1)return cnt;
	if(!limit&&!zero&&f[digit][cnt]!=-1)return f[digit][cnt];
	int d=limit?digits[digit]:9;
	ll ans=0;
	for(int i=0;i<=d;i++)ans+=dfs(digit-1,limit&&i==d,!i&&zero,cnt+((i==c)&&(i||!zero)));
	if(!limit&&!zero)f[digit][cnt]=ans;
	return ans;
}
ll solve(ll n){
	memset(f,-1,sizeof(f));
	top=0;
	while(n){
		digits[top++]=n%10;
		n/=10;
	}
	return dfs(top-1,1,1,0);
}
int main(){
	scanf("%lld%lld",&a,&b);
	for(c=0;c<=9;c++)printf("%lld%c",solve(b)-solve(a-1),c!=9?' ':'\n');
	return 0;
}