hdu3555数位dp
来源:互联网 发布:电脑怎么连接宽带网络 编辑:程序博客网 时间:2024/05/21 00:00
题目大意:找在0~n范围内有多少个49!
思路:和hdu2089一样的题目
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <fstream>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <vector>#include <map>#include <set>#include <iomanip>using namespace std;//#pragma comment(linker, "/STACK:102400000,102400000")#define maxn 70#define MOD 1000000007#define mem(a , b) memset(a , b , sizeof(a))#define LL long long#define INF 100000000LL n;LL dp[70][10];void init(){ mem(dp , 0); dp[0][0] = 1; for(int i = 1 ; i <= 70 ; 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){ init(); int digit[70]; int pos = 0; while(n) { digit[++pos] = n % 10; n /= 10; } digit[pos+1] = 0; LL ans = 0; for(int i = pos ; i ; i--) { for(int j = 0 ; j < digit[i] ; j ++) { if(!(digit[i+1] == 4 && j == 9)) ans += dp[i][j]; } if( (digit[i+1] == 4 && digit[i] == 9)) break; } return ans;}int main(){ int t; scanf("%d" , &t); while(t--) { scanf("%lld" , &n); n++; printf("%lld\n" , n-solve(n)); } return 0;}
0 0
- 【数位DP】 hdu3555 Bomb
- 【hdu3555】【数位DP】Bomb
- 【数位DP】Bomb HDU3555
- hdu3555 Bomb 数位DP
- hdu3555数位dp
- 数位dp hdu3555
- HDU3555:Bomb(数位DP)
- hdu3555 Bomb (数位DP)
- HDU3555 Bomb 数位DP
- hdu3555 数位DP
- hdu3555(数位DP)
- Hdu3555 - Bomb - 数位dp
- hdu3555 Bomb 数位dp
- hdu3555 Bomb(数位DP)
- HDU3555 Bomb 数位DP
- hdu3555,hdu2089 数位dp
- hdu3555(数位DP)
- hdu3555 数位dp
- uva 11388 最大公约数与最小公倍数的关系
- Linux设备驱动模型 SPI之一
- 安卓TextView中的文本加上横线或者下划线
- vs2010如何检测内存泄漏
- Caffe softmax_layer.cpp学习
- hdu3555数位dp
- windows系统下安装ubuntu的方法
- redis安装步骤
- 统计思维:程序员数学之概率统计(第2版):第1章 探索性数据分析
- 蓝桥杯历届-猜年龄
- Android工程目录gen文件夹—笔记
- 第一章 CPU构架概述
- 设计模式
- 安卓自定义属性,Android studio无法提示,只提示3个