来份题解嘛!!!!!!!!!!dalao

P1831 杠杆数

@[SNiFe](/user/25709) ``` #include <bits/stdc++.h> using namespace std; long long a[101],dp[50][50][2500],len; long long dfs(int pos,int pront,int mos,bool limit){ long long tmp=0; if (pos==0){ return mos==0; } if (mos<0){ return 0; } if (!limit && dp[pos][pront][mos]!=-1){ return dp[pos][pront][mos]; } for (int i=0;i<=(limit?a[pos]:9);i++){ tmp+=dfs(pos-1,pront,mos+(i*(pos-pront)),limit && (i==(limit?a[pos]:9))); //cout<<tmp<<endl; } if (!limit){ dp[pos][pront][mos]=tmp; } return tmp; } long long f(long long x){ len=0; long long ans=0; memset(dp,-1,sizeof dp); memset(a,0,sizeof a); while (x){ a[++len]=x%10; x/=10; } for (int i=1;i<=len;i++){ ans+=dfs(len,i,0,1); } return ans-len; } int main(){ long long x,y; cin>>x>>y; long long l=f(x-1),r=f(y); cout<<r-l<<endl; } ``` 求关注
by ikun_god @ 2023-12-03 11:28:48


|