码迷,mamicode.com
首页 > 其他好文 > 详细

D - Bomb

时间:2018-05-31 20:28:26      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:==   long   mem   string   tin   mes   type   std   limit   

 1 //反向62
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <string>
 5 #include <cstring>
 6 #include <cstdio>
 7 using namespace std;
 8 
 9 typedef long long ll;
10 // const int maxn = 1e5+5;
11 ll n;
12 ll a[100];
13 ll dp[100][100];
14 
15 //下标,前面是否4,是否有前导0, 是否有限制
16 ll dfs(ll pos, ll sta, ll pre, ll limit){
17     if(pos == -1) return 1;
18     if(!limit && dp[pos][sta] != -1)
19         return dp[pos][sta];
20     int up = limit?a[pos]:9;
21     ll ans = 0;
22     for(int i = 0;i <= up;i++){
23         if(pre == 4 && i == 9){
24             continue;
25         }
26         ans += dfs(pos-1, i == 4, i, limit && i == a[pos]);
27     }
28     if(!limit) dp[pos][sta] = ans;
29     return ans;
30 }
31 
32 ll solve(ll x){
33     ll pos = 0;
34     while(x){
35         a[pos++] = x%10;
36         x /= 10;
37     }
38     return dfs(pos-1, 0, -1, true);
39 }
40 
41 int main(){
42     memset(dp, -1, sizeof dp);
43     int t;
44     scanf("%d", &t);
45     while(t--){
46         scanf("%lld", &n);
47         ll ans = solve(n);
48         printf("%lld\n", n - ans + 1);
49     }
50     return 0;
51 }

 

D - Bomb

标签:==   long   mem   string   tin   mes   type   std   limit   

原文地址:https://www.cnblogs.com/jaydenouyang/p/9118586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!