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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 本地部署 DeepSeek:小白也能轻松搞定!
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)