关闭

[数位DP]Hdu 3555——Bomb

标签: Hdu数位DP
308人阅读 评论(0) 收藏 举报
分类:

题目梗概

求不超过n的含49的数字的个数。

解题思路

数位DPSB题。

#include<cstdio>
#define LL long long
using namespace std;
LL n,f[25][15],x;
int a[25],len,t;
LL DFS(int len,int lst,int pd){
    if (len<1) return 1;
    if (!pd&&f[len][lst]!=0) return f[len][lst];
    int now;if (!pd) now=9;else now=a[len];
    LL num=0;
    for (int i=0;i<=now;i++)
    if (lst!=4||i!=9) num+=DFS(len-1,i,pd&&(i==now));
    if (!pd) f[len][lst]=num;
    return num;
}
int main(){
    scanf("%d",&t);
    while(t--){
        scanf("%lld",&n);
        len=0;x=n;
        while(x>0){
            a[++len]=x%10;
            x/=10;
        }
        printf("%lld\n",n+1-DFS(len,0,1));
    }
    return 0;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:40970次
    • 积分:1759
    • 等级:
    • 排名:千里之外
    • 原创:127篇
    • 转载:1篇
    • 译文:0篇
    • 评论:46条
    我的日记
    博客专栏