zoukankan      html  css  js  c++  java
  • HDU 3555 Bomb (数位DP)

    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
    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.
     
    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int mxn = 25 ;
    ll n,m,k,t,dp[mxn][3],lim[mxn];
    ll dfs(int pos , int state , int limit)
    {
        if(!pos) return 1;
        if(!limit && dp[pos][state]!=-1) return dp[pos][state];
        int up = limit ? lim[pos] : 9 ;
        ll ans = 0 ;
        for(int i=0;i<=up;i++)
        {
            if( ( state && i==9)) continue ;
            ans += dfs(pos-1, i==4 , limit && i==lim[pos] ) ;
        }
        if(!limit) dp[pos][state] = ans;
        return ans;
    }
    ll cal(ll x)
    {
        int len = 0;
        memset(lim,0,sizeof(lim));
        memset(dp,-1,sizeof(dp));
        while(x) lim[++len] = x%10 , x/=10 ;
        return dfs(len,false,true);
    }
    int main()
    {
        cin>>t;
        while(t--)
        {
            cin>>n;
            cout<<n-cal(n)+1<<endl;
        }
        return 0;
    }
    Author
    fatboy_cw@WHU
     
     
    所遇皆星河
  • 相关阅读:
    v-date
    文字在图片上
    v-生命周期
    彭博接口分类
    如何指定vim 的查找是从上往下还是从下往上[z]
    查看linux版本
    git web找不到new project解决方法
    比特币运行原理[z]
    [Z]haproxy+keepalived高可用群集
    blockchain good article
  • 原文地址:https://www.cnblogs.com/Shallow-dream/p/11984970.html
Copyright © 2011-2022 走看看