dp[i][j][k]表示当前位是第i位 选取状态为j 要求长度为k 的个数
#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #define ll __int64 using namespace std; ll l,r,k,dp[21][1<<10][11]; int num[21]; ll dfs(ll n,ll pos,ll len,bool flag) { if(pos==-1) return len==k; if(!flag&&dp[pos][n][k]!=-1) return dp[pos][n][k]; int p=flag num[pos]:9; ll ans=0; int i,j; for(i=0;i<=p;i++) { if(n||i) { if((1< n) ans+=dfs(n|(1<