求调
查看原帖
求调
681941
OIer_Hhy楼主2024/7/12 18:27

仿照 数位dp 写的

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=20;
ll l,r,f[N],p[N];
ll ans1[N],ans2[N];
int a[N];
inline void solve(ll n,ll *ans){
	ll tmp=n;
	int len=0;
	while(tmp){
		a[++len]=tmp%10;
		tmp/=10;
	}
	for(int i=len;i>=1;i--){
		for(int j=0;j<10;j++) ans[j]+=f[j]*a[i];
		for(int j=0;j<a[i];j++) ans[j]+=p[i-1];
		n-=p[i-1]*a[i];
		ans[a[i]]+=n+1;
		ans[0]-=p[i-1];
	}
}
signed main(){
	cin>>l>>r;
	p[0]=1;
	for(int i=1;i<=13;i++){
		f[i]=f[i-1]*10+p[i];
		p[i]=p[i-1]*10;
	}
	solve(r,ans1);
	solve(l-1,ans2);
	for(int i=0;i<10;i++)
		cout<<ans1[i]-ans2[i]<<' ';
	return 0;
}



2024/7/12 18:27
加载中...