hdu 3555 Bomb(数位dp)
2015-04-23 16:44
274 查看
Bomb
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submission(s): 9343 Accepted Submission(s): 3303
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 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.
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 HintFrom 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.
Author
fatboy_cw@WHU
Source
2010 ACM-ICPC Multi-University
Training Contest(12)——Host by WHU
含49的个数。
#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath> #define N 1010 #define ll long long using namespace std; ll dp[30][3];//0:合法 1:9开头 2:不合法 ///dp[i][j] 长度为i的j状态 void init() { memset(dp,0,sizeof dp); dp[0][2]=1; for(int i=1; i<=24; i++) { dp[i][0]=dp[i-1][0]*10+dp[i-1][1]; dp[i][1]=dp[i-1][2]; dp[i][2]=dp[i-1][2]*10-dp[i-1][1]; } } ll solve(ll n) { int a[40]; int len=1; while(n) { a[len++]=n%10; n/=10; } a[len]=0; ll ans=0; int flag=0; for(int i=len-1; i>=1; i--) { ans+=dp[i-1][0]*a[i]; if(flag) ans+=dp[i-1][2]*a[i]; if(!flag&&a[i]>4) ans+=dp[i-1][1]; if(a[i]==9&&a[i+1]==4) ///xx49***的情况 *为待填数位 flag=1; } return ans; } int main() { init(); int t; cin>>t; while(t--) { ll n; cin>>n; printf("%I64d\n",solve(n+1)); } return 0; }
相关文章推荐
- HDU 3555 Bomb(数位DP)
- HDU 3555 D - Bomb(数位dp)(模板)
- HDU-3555 Bomb (数位DP)
- HDU 3555 Bomb (数位DP)
- HDU-3555 Bomb 数位DP
- HDU 3555 Bomb(数位DP)
- hdu 3555 Bomb(数位dp)
- 【数位DP】 HDU 3555 Bomb
- Hdu 3555 - Bomb (数位dp)
- HDU-3555-Bomb【数位dp】
- HDU 3555 Bomb(数位DP)
- hdu 3555 bomb 数位dp
- HDU 3555 Bomb (数位DP)
- HDU 3555 Bomb (数位DP)
- hdu 3555 Bomb(数位dp)
- HDU 3555 Bomb(数位DP)
- hdu_3555_Bomb(数位DP)
- 数位DP——Bomb ( HDU 3555 )
- HDU 3555 Bomb(数位DP)
- HDU 3555 Bomb(数位dp 深搜版)