How Many Zeroes? LightOJ - 1140

Posted nr1999

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了How Many Zeroes? LightOJ - 1140相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<time.h>
#include<iostream>
#include<ctype.h>
#include<map>
#include<set>
#include<string>
#include<vector>
#include<algorithm>
#include<stdlib.h>
#include<queue>
#include<stack>
using namespace std;
#define LL long long
LL dp[55][55],num[55];
LL dfs(int pos,int iszero,int st,int limit)//pow为数位,iszero判断是否为0,st上一个状态初始为0,limit是否达到上限
{
    if(pos<0)
    {
        if(iszero)
            return 1;
        else
            return st;
    }
    if(!limit&&!iszero&&dp[pos][st]!=-1)
        return dp[pos][st];
    LL ans=0;
    int len=limit?num[pos]:9;
    for(int i=0;i<=len;i++)
    {
        if(iszero)
            ans+=dfs(pos-1,i==0,0,limit&&i==len);
        else
            ans+=dfs(pos-1,0,st+(i==0),limit&&i==len);
    }
    if(!limit&&!iszero)
        dp[pos][st]=ans;
    return ans;

}
LL sv(LL a)
{
    int len=0;
    memset(dp,-1,sizeof(dp));
    memset(num,0,sizeof(num));
    while(a)
    {
        num[len++]=a%10;
        a/=10;
    }
    return dfs(len-1,1,0,1);
}
int main()
{
    LL m,n;
    while(~scanf("%lld%lld",&n,&m))
    {
      //  LL ee=sv(m)-sv(n-1);
        printf("%lld
",sv(m)-sv(n-1));
    }

}

 

以上是关于How Many Zeroes? LightOJ - 1140的主要内容,如果未能解决你的问题,请参考以下文章

How Many Zeroes? LightOJ - 1140

Light oj 1140 How Many Zeroes?

Trailing Zeroes (III) LightOJ - 1138(二分)

Trailing Zeroes (I) LightOJ - 1028

LightOJ Trailing Zeroes (III) 1138二分搜索+阶乘分解

lightoj-1028 - Trailing Zeroes (I)(素数法求因子个数)