博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
D - Bomb
阅读量:5273 次
发布时间:2019-06-14

本文共 1191 字,大约阅读时间需要 3 分钟。

1 //反向62 2 #include 
3 #include
4 #include
5 #include
6 #include
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 }

 

转载于:https://www.cnblogs.com/ouyang_wsgwz/p/9118586.html

你可能感兴趣的文章
通过cookie验证用户登录
查看>>
js-数组和字符串转化
查看>>
Map源码阅读
查看>>
客户端链接如何判断Socket的实时连接
查看>>
返回密码[Python]小练习 -- 模拟登陆人人网
查看>>
元素边缘android布局属性详解
查看>>
LinuxNote3.WIn7与ubuntu双系统以及Android开发环境
查看>>
【leetcode】Triangle
查看>>
Spring <import>标签配置
查看>>
蓝牙低功耗profile:ATT和GATT(转载)
查看>>
【数据结构】单调数据结构之一:单调队列
查看>>
读书笔记十四:TCP/IP详解之TCP的成块数据流
查看>>
设计模式(四)多例模式
查看>>
unsigned int 转 RGB
查看>>
ViewPage实现幻灯广告墙
查看>>
Tapestry ErrorReport
查看>>
print语句中逗号(,)和反斜杠(\)的区别
查看>>
contentType
查看>>
垃圾回收算法
查看>>
模拟退火 Buried memory
查看>>