90ptsTLE求优化,悬关
查看原帖
90ptsTLE求优化,悬关
654577
RainySoul楼主2024/7/24 14:33
#include<bits/stdc++.h>
using namespace std;
long long int l,r,k,sr,sl,ans,f[10];
map<string,bool> m,m1;
long long to__int(string a){
	long long sum=0;
	for(int i=0;i<a.size();i++)sum=sum*10+a[i]-'0';
	return sum;
}
string to__string(long long a){
	string temp="";
	while(a>0)temp+=a%10+'0',a/=10;
	return temp;
}
void shengcheng(string a,int wei){
	if(m1[a]==1)return;
	if(wei>sr)return;
	int temp=to__int(a);
	string t=to__string(temp);
	if(!m[t]&&temp>=l&&temp<=r){
		m1[a]=1; 
		m[t]=1;
		ans+=temp;
		ans%=998244353;
	}
	bool flag[10];
	int now=0;
	memset(flag,0,sizeof(flag));
	for(int i=0;i<a.size();i++)
		if(!flag[a[i]-'0'])flag[a[i]-'0']=1,now++;
	if(now<k)
		for(int i=0;i<=9;i++)
			shengcheng(char(i+'0')+a,wei+1);
	else
		for(int i=0;i<=9;i++)
			if(flag[i])
				shengcheng(char(i+'0')+a,wei+1);
}
int main(){
	cin>>l>>r>>k;
	sl=log10(l)+1,sr=log10(r)+1;
	shengcheng("",0);
	cout<<ans;
	return 0;
}
2024/7/24 14:33
加载中...