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
     
     
    所遇皆星河
  • 相关阅读:
    Linux命令笔记
    拆功放板笔记
    从输入 URL 到页面加载完的过程中都发生了什么---优化
    python学习笔记(三)
    python学习笔记(二)
    python学习笔记(一)
    公交wifi运营平台分析
    testNG小试牛刀
    maven小项目注册服务(三)--web模块
    用maven进行测试
  • 原文地址:https://www.cnblogs.com/Shallow-dream/p/11984970.html
Copyright © 2011-2022 走看看