RT,别人的程序跑的飞快,窝的要开O2才过,是我写假了么/kel
int dfs(int len,int sum,int now,int mo,bool sma)
{
if(!len)return sum==mo&&!now;
if(f[len][sum][now]!=-1&&sma)return f[len][sum][now];
int lmt=sma?9:num[len],ret=0;
for(int i=0;i<=lmt;i++)
ret+=dfs(len-1,sum+i,(now*10+i)%mo,mo,sma||(i<lmt));
if(sma)f[len][sum][now]=ret;
return ret;
}
int solve(int x)
{
int cnt=0,ret=0;
while(x){num[++cnt]=x%10;x/=10;}
for(int i=1;i<=cnt*9;i++)
memset(f,-1,sizeof(f)),ret+=dfs(cnt,0,0,i,0);
return ret;
}
我前面define int long long了,没有ll的问题(
不要无意义回复,求大佬帮忙看看,蟹蟹qwq