HDU 3555 Bomb
2015-05-03 21:50
232 查看
Problem Description
The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the time bomb. The number sequence of the time bomb counts from 1 to N. If the current number sequence includes the sub-sequence "49", the power of the blast wouldadd one point.
Now the counter-terrorist knows the number N. They want to know the final points of the power. Can you help them?
Input
The first line of input consists of an integer T (1 <= T <= 10000), indicating the number of test cases. For each test case, there will be an integer N (1 <= N <= 2^63-1) as the description.The input terminates by end of file marker.
Output
For each test case, output an integer indicating the final points of the power.
Sample Input
3 1 50 500
Sample Output
0 1 15
Hint
From 1 to 500, the numbers that include the sub-sequence "49" are "49","149","249","349","449","490","491","492","493","494","495","496","497","498","499",so the answer is 15.
简单数位dp
#include<cstdio> #include<iostream> #include<algorithm> #include<vector> #include<cstring> using namespace std; const int maxn = 20; long long f[maxn][10], n; int T; void get() { memset(f, 0, sizeof(f)); for (int i = 0; i < 10; i++) f[1][i] = 1; for (int i = 2; i <= 20; i++) for (int j = 0; j < 10; j++) for (int k = 0; k < 10; k++) if (j != 4 || k != 9) f[i][j] += f[i - 1][k]; } long long work() { long long sum = 0, x = max(n, n + 1); int digit[maxn] = {0}, tot = 0; while (x) { digit[++tot] = x % 10; x /= 10; } for (int i = tot; i >= 1; i--) { for (int j = digit[i] - 1; j >= 0; j--) sum += f[i][j]; if (digit[i] == 9 && digit[i + 1] == 4) break; } return n - sum + 1; } int main() { get(); scanf("%d", &T); while (T--) { scanf("%lld", &n); printf("%lld\n", work()); } return 0; }
相关文章推荐
- hdu3555——Bomb(数位dp)
- HDU 3555 Bomb 数位dp
- hdu 3555 Bomb 【数位DP】
- HDU 3555 Bomb 数位dp
- hdu_3555 bomb
- HDU 3555 Bomb (数位dp)
- HDU 3555 Bomb (数位dp)
- HDU 3555 Bomb
- [数位dp] hdu 3555 Bomb
- hdu_3555_Bomb(数位DP)
- HDU 3555 Bomb 数位DP .
- hdu 3555 Bomb
- hdu 3555 Bomb 按位dp模板题
- HDU 3555 Bomb(1-n含有“49”的数字个数)
- hdu(3555)——Bomb(不要49)
- HDU 3555: Bomb (数位DP)
- HDU 3555 Bomb(数位DP模板啊两种形式)
- HDU 3555 Bomb (数位DP)
- HDU - 3555 Bomb 数位DP
- HDU 3555 Bomb (数位dp)