HDU3555(数位DP)
2015-05-29 19:43
183 查看
题意:求区间[a,b],包含49的数有多少,这题只需把hdu2089稍微改下就行;
#include <iostream> #include <cstdio> using namespace std; typedef long long LL; LL dp[100][100]; void init(){ dp[0][0] = 1; for(int i = 1; i <= 20; i++) for(int j = 0; j < 10; j++) for(int k = 0; k < 10; k++) if(!(j == 4 && k == 9)) dp[i][j] += dp[i-1][k]; } LL solve(LL n){ int d[100]; int len = 0; while(n > 0){ d[++len] = n%10; n /= 10; } d[len + 1] = 0; LL ans = 0; for(int i = len; i >= 1; i--){ for(int j = 0; j < d[i]; j++){ if(!(d[i+1] == 4 && j == 9)) ans += dp[i][j]; } if((d[i] == 9 && d[i+1] == 4)) break; } return ans; } int main() { #ifdef xxz freopen("in.txt","r",stdin); #endif // xxz LL n,T; init(); cin>>T; while(T--){ cin>>n; cout<<n - (solve(n+1) - solve(1))<<endl; } return 0; }
相关文章推荐
- 几个问题。
- 计算机中断例程和启动过程
- JPEGOPTIM压缩优化
- 通过两个汇编实例对高级语言数组实现原理的发现
- Windows Shell 程序
- 从零基础学习数据库之DML语言(二)
- 从零基础学习数据库之DML语言(一)
- 【一些事晚报】顶尖微信运营宝典
- 严谨,保证,职业。
- 基础篇--用户管理
- 基础篇--用户管理
- 心、肝、脾、肺、肾五脏解说+ 五脏六腑的作用
- Windows 远程控制 Mac 的解决方案
- 2015 上海邀请赛c题 calculator hdu5238
- 关于matlab中矩阵左除和右除
- Linux信号、信号处理和信号处理函数
- HDU2089(数位DP)
- 人体的五行属性
- 《梦断代码》读书笔记3
- 【8. HA模块】云跳板机服务系统设计及实现