def f(n): dp = [[[0,0] for _ in range(10)] for _ in range(20)] dp[-1][0][0]=1 for i in range(19, 0, -1): d = n//(10**(i-1))%10 left = 0 left2 = 0 tmp = 0 for k in range(10): dp[i-1][k][1]+=dp[i][k][1]*(k+1)+left left += dp[i][k][1] # for j in range(10): # dp[i-1][max(j,k)][1]+=dp[i][j][1] dp[i-1][k][1]+=dp[i][k][0]*tmp if k