求助
查看原帖
求助
1142179
Main_Lid楼主2024/12/15 19:02
#include<bits/stdc++.h>
using namespace std;
#define int long long
int l,r;
int f[1100][1100],a[100100];
int t;
int dfs1(int pos,int pre,int lead,int sim)
{
	if(pos==0)return pre;
	if(!sim&&!lead&&f[pos][pre]!=-1)return f[pos][pre];
	int res=0,up=sim?a[pos]:9;
	for(int i=0;i<=up;i++)
		res+=dfs1(pos-1,pre+((i==t)&&!(lead&&i==0)),lead&&i==0,sim&&i==up);
	return sim?res:(lead?res:f[pos][pre]=res);
}
int c1(int x)
{
	memset(f,-1,sizeof f);
	int len=0;
	while(x)
	{
		a[++len]=x%10;
		x/=10;
	}
	return dfs1(len,0,1,1);
}
signed main()
{
	while(cin>>l>>r)
	{
		if(l==0&&r==0)return 0;
		if(r<=l)
		{
			int sp=r;
			r=l,l=sp;
		}
		memset(f,0,sizeof f);
		memset(a,0,sizeof a);
		t=0;
		for(int i=0;i<=9;i++)
		{
			t=i;
			cout<<c1(r)-c1(l-1)<<' ';
		}
		cout<<endl;
	}
	return 0;
}

2024/12/15 19:02
加载中...