zoukankan      html  css  js  c++  java
  • UESTC 832

    数位DP

    DFS

    #include <iostream>
    #include<string.h>
    #include<stdio.h>
    using namespace std ;
    #define LL long long
    LL dp[22][11];
    int dig[22];
    
    LL dfs(int len,int cnt,int e)  长度  前几个数字 和%10   是否可以随便填  1 不可以   0  可以 
    {
        if(len==0)
            return cnt==0;
        if(!e&&dp[len][cnt]!=-1)
            return dp[len][cnt];
        LL ans=0;
        int mmax = e ? dig[len] : 9;
        for(int i=0;i<=mmax;i++)
        {
            ans+=dfs(len-1,(cnt+i)%10,e&&(i==mmax));
        }
        if(!e)
            dp[len][cnt]=ans;
        return ans;
    }
    
    LL Ques(LL n)
    {
        if(n==-1)
            return 0;
        int len=0;
        memset(dig,0,sizeof(dig));
        while(n)
        {
            dig[++len]=n%10;
            n/=10;
        }
        return dfs(len,0,1);
    }
    
    int main()
    {
        int t,ca=1;
        scanf("%d",&t);
        memset(dp,-1,sizeof(dp));
        while(t--)
        {
            LL n,m;
            scanf("%lld%lld",&n,&m);
            printf("Case #%d: %lld
    ",ca++,Ques(m)-Ques(n-1));
        }
        return 0 ;
    }
  • 相关阅读:
    iOS开发之--打印一堆奇怪东西的解决方案
    iOS开发之--从URL加载图片
    iOS开发之--搭建本地的SVN服务器
    HTML5
    swift
    swift
    HTML 换行
    HTML 注释
    HTML 水平线
    /etc/rc.d/rc.local
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/6477269.html
Copyright © 2011-2022 走看看