Advertisement
tsypko

Untitled

Mar 27th, 2017
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.49 KB | None | 0 0
  1. ll dp[20][2];
  2.  
  3. ll solve(ll n){
  4.     memset(dp, 0, sizeof(dp));
  5.     string s = _to_string(n);
  6.     bool has = false;
  7.     for(int i = 0; i < (int) s.size(); i++){
  8.         for(int j = 0; j + '0' < s[i]; j++){
  9.             dp[i][j == 3 || has]++;
  10.         }
  11.         if(i + 1 < (int) s.size()){
  12.             dp[i + 1][0] += dp[i][0] * 9;
  13.             dp[i + 1][1] += dp[i][0] + dp[i][1] * 10;
  14.         }
  15.         if(s[i] == '3')
  16.             has = true;
  17.     }
  18.     return dp[(int) s.size() - 1][1];
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement