样例求调
查看原帖
样例求调
878137
_QWQ__QWQ_楼主2024/6/16 21:35

rt,我的样例只有0的部分过了,其他都输出19,有没有哪位巨佬帮忙调一下QAQ。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=1e9+7;
int dp[25][100][2][2],num[25];
int dfs(int pos,int now,int ans,bool az,bool limit){
	if(pos==0)return ans;
	if(dp[pos][ans][az][limit]!=-1){
		return dp[pos][ans][az][limit];
	}
	int end=limit?num[pos]:9;
	int sum=0;
	for(int i=0;i<=end;i++){
		if(az==1&&i==0){
			continue;
		}
		sum+=dfs(pos-1,now,ans+(i==now?1:0),az==1&&i==0,limit==1&&i==end);
	}
	dp[pos][ans][az][limit]=sum;
	return sum;
}
int query(int x,int val){
	memset(dp,-1,sizeof(dp));
	int cnt=0;
	while(x!=0){
		cnt++;
		num[cnt]=x%10;
		x/=10; 
	}
	return dfs(cnt,val,0,1,1);
}
signed main(){
////	int t;
////	cin>>t;
////	while(t--){
		int l,r;
		cin>>l>>r;
		for(int i=0;i<=9;i++){
			cout<<query(r,i)-query(l-1,i)<<" ";
		}
		
//	}
	return 0;
}
2024/6/16 21:35
加载中...