TLE 求助
查看原帖
TLE 求助
760998
rhn7楼主2024/3/7 20:31
#include<bits/stdc++.h>
#define f dp[x][r][id[lcm]]
using namespace std;
typedef long long ll;
ll T,n,l,r,id[2525],a[20],cnt;
pair<ll,ll> dp[20][2525][50];
ll dfs(ll x,ll r,ll lcm,ll lim){
	if(!x) return !(r%lcm);
	if(!lim&&f.first==cnt) return f.second;
	ll res=0,up=lim?a[x]:9;
	for(ll i=0;i<=up;i++) res+=dfs(x-1,(r*10+i)%2520,(i==0)?lcm:lcm*i/__gcd(lcm,i),lim&&i==up);
	return (f={cnt,res}).second;
}
ll s(ll x){
	n=0;cnt++;
	while(x) a[++n]=x%10,x/=10;
	return dfs(n,0,1,1);
}
int main(){
	for(ll i=0;i<256;i++){
		ll lcm=1;
		for(ll j=0;j<=7;j++){
			if(i&(1<<j)) lcm=lcm*(j+2)/__gcd(lcm,j+2);
		}
		if(!id[lcm]) id[lcm]=++n;
	}
	cin>>T;
	while(T--) cin>>l>>r,cout<<s(r)-s(l-1)<<"\n";
	return 0;
}

本地不开O2才2s出头,CF上居然4s都跑不过

2024/3/7 20:31
加载中...