HDU 3555 —— Bomb
2016-05-18 21:37
351 查看
Bomb
[align=left]Problem Description[/align]
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 would add 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.
[align=left]Output[/align]
For each test case, output an integer indicating the final points of the power.
[align=left]Sample Input[/align]
3
1
50
500
[align=left]Sample Output[/align]
0
1
15
当我们没有限制,可以任意填写数字时(limit=0),如果剩下的等待填写的位数(u)相同,上一位是否为4 (is4)相同,之前是否出现49(have)也相同,则可以断定:即使我之前填写的数字是不一样的,最终填写完全后,含有49的数字个数会是相同的!
因此,dp[u][is4][have]的定义是正确的!
[align=left]Problem Description[/align]
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 would add 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.
[align=left]Output[/align]
For each test case, output an integer indicating the final points of the power.
[align=left]Sample Input[/align]
3
1
50
500
[align=left]Sample Output[/align]
0
1
15
当我们没有限制,可以任意填写数字时(limit=0),如果剩下的等待填写的位数(u)相同,上一位是否为4 (is4)相同,之前是否出现49(have)也相同,则可以断定:即使我之前填写的数字是不一样的,最终填写完全后,含有49的数字个数会是相同的!
因此,dp[u][is4][have]的定义是正确的!
#include <cstdio> #include <iostream> #include <cstring> #include <string> using namespace std; typedef long long LL; int a[20]; LL dp[20][2][2]; LL dfs(int u, bool is4, bool have, bool limit) { if(u < 1) return have; if(!limit && dp[u][is4][have] != -1) return dp[u][is4][have]; int maxn = limit ? a[u] : 9; LL ret = 0; for(int i=0; i<=maxn; i++) { ret += dfs(u-1, i==4, have||(is4&&i==9), limit&&i==maxn); } if(!limit) dp[u][is4][have] = ret; return ret; } LL f(LL n) { int len=0; while(n) { a[++len] = n%10; n /= 10; } return dfs(len, 0, 0, 1); } int main () { int T; LL n; scanf("%d", &T); memset(dp, -1, sizeof(dp)); while(T--) { scanf("%lld", &n); printf("%lld\n", f(n)); } r 4000 eturn 0; }
相关文章推荐
- HDU 4734 —— F(x)
- POJ 3070 —— Fibonacci 【矩阵快速幂】
- HDU 1848 —— Fibonacci again and again 【博弈 sg函数】
- HDU 1847 ——Good Luck in CET-4 Everybody!
- HDU 1850 —— Being a Good Boy in Spring Festival
- HDU 2149 —— Public Sale
- HDU 1907、2907 【NIM、anti-NIM】
- HDU 2147 —— kiki's game
- HDU 1846 —— Brave Game
- Sicily - Water 【寻找规律】
- C++对C扩展之默认参数(default)
- HDU 2746 ——Max Sum Plus Plus Plus 【dfs+带备忘 或 DP】
- Android 开发实战经验总结
- tyvj 1305 —— 长度不超过m的最大连续和 【前缀和+单调队列】
- NYOJ 742 —— 最大m段和 【区间DP】
- NYOJ 1103 —— m划分为n个正整数的个数
- 卡特兰数
- NYOJ 651 —— n划分为2个以上不同正整数的划分个数
- Java集合类的继承关系
- TestNG参数化测试之Excel读取数据