hdu 3555 bomb 数位dp

题目链接

和上一题差不多, 可以用总数-不含49的个数。

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define mem1(a) memset(a, -1, sizeof(a))
 4 #define ll long long
 5 ll dp[20][20], digit[20];
 6 int len;
 7 ll dfs(int len, bool state, bool fp) {     //state表示这一位是否有限制
 8     if(!len)                                //fp表示len这一位是否只能取到小于等于digit[len]的数
 9         return 1;
10     if(!fp && dp[len][state]!=-1)
11         return dp[len][state];
12     ll ret = 0, maxx = fp?digit[len]:9;
13     for(int i = 0; i<=maxx; i++) {
14         if(i==9&&state)
15             continue;
16         ret += dfs(len-1, i==4, fp&&i == maxx); //对于这一题, 当这一位为6的时候, 下一位就会有限制
17     }
18     if(!fp)
19         return dp[len][state] = ret;
20     return ret;
21 }
22 ll cal(ll n) {
23     len = 0;
24     ll tmp = n;
25     while(n) {
26         digit[++len] = n%10;
27         n/=10;
28     }
29     return tmp-dfs(len, false, true);
30 }
31 int main()
32 {
33     int t;
34     ll b;
35     cin>>t;
36     while(t--) {
37         scanf("%I64d", &b);
38         mem1(dp);
39         printf("%I64d\n", cal(b)+1);
40     }
41 }
复制代码

 

posted on   yohaha  阅读(151)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示