求组Hack/kel
查看原帖
求组Hack/kel
1368364
_Cdm_楼主2024/7/14 08:01

AC#3,其余全WA

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int k,len,num[21];ll l,r,dp[21][10];
int dfs(int x,int pre,int lm,int f){
	if(!x)return 1;
	if(!lm&&f&&~dp[x][pre])return dp[x][pre];
	int maxc=lm?num[x]:9,ret=0;
	for(int i=0;i<=maxc;i++)if(!f||abs(i-pre)>=k)ret+=dfs(x-1,i,lm&&i==maxc,f||i);
	return !lm&&f?dp[x][pre]=ret:ret;
}int solve(int x){
	len=0;
	while(x)num[++len]=x%10,x/=10;
	return dfs(len,-k,1,0);
}int main(){return memset(dp,-1,sizeof dp),cin>>l>>r>>k,cout<<solve(r)-solve(l-1),0;}
2024/7/14 08:01
加载中...