[TOJ 3655] Bomb
2015-08-18 19:38
411 查看
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?
The input terminates by end of file marker.
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.
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 很简单的数位统计题, 此类题目最好一律采用记忆化搜索的方法进行统计,好想又好写。#include<iostream> #include<cstring> #include<cstdio> using namespace std; long long dp[100][3]; long long n; int num[100]; long long dfs(int pos,int have,int ca) { if(pos==-1) return have==2; if(!ca&&dp[pos][have]!=-1) return dp[pos][have]; int v=ca?(num[pos]):9; long long ans=0; for(int i=0;i<=v;i++) { int nhave=have; if(have==0&&i==4) nhave=1; if(have==1&&i!=4) nhave=0; if(have==1&&i==9) nhave=2; ans+=dfs(pos-1,nhave,ca&&(i==v)); } if(!ca) { return dp[pos][have]=ans; } return ans; } long long get(long long p) { int len=0; while(p) { num[len++]=p%10; p/=10; } return dfs(len-1,0,1); } int main() { memset(dp,-1,sizeof(dp)); int t; scanf("%d",&t); while(t--) { scanf("%lld",&n); printf("%lld\n",get(n)); } }
相关文章推荐
- 网络编程的面试题
- iOS设计模式 - 生成器
- 练习1
- 剑指offer 算法 (画图让抽象问题形象化)
- 怎样使用OpenCV进行人脸识别 [停止更新]
- 华为机试题 凸包
- sizeof与strlen区别
- 【JS/读书随笔】JavaScript编程精解/Eloquent JavaScript:Chapter 4 错误处理
- qt 信号与槽
- java内存基础
- iOS开发核心语言Objective C —— 所有知识点总结
- LAP + MySQL
- 圆形的ImageView
- UDP协议及包格式
- onethink和phpwind共享
- fzu 1962 树状数组 OR 线段树
- [NOIP2011]瑞士轮
- 单元测试/集成测试/系统测试的区别
- codeforces 560 E. Gerald and Giant Chess (dp+lucas定理,求大组合数 mod p,p为质数)
- Android 中的DisplayMetrics类的用法