fzu 2113 Jason的特殊爱好

来源:互联网 发布:人工智能 估值 编辑:程序博客网 时间:2024/05/21 19:43

                                            题 目 传 送 门:

数位dp水题,dp[i][j]表示到第i位,1的个数为j的数的个数

ac代码:

#include <iostream>#include <cstdio>#include <cstring>using namespace std;int num[20];long long dp[20][20];long long dfs(int len,int n,int limit){    if(len<0)    return n;    if(!limit&&dp[len][n]!=-1)    return dp[len][n];    int fp=limit?num[len]:9;    long long ret=0;    for(int i=0;i<=fp;i++)    {        if(i==1)        ret+=dfs(len-1,n+1,limit&&i==fp);        else        ret+=dfs(len-1,n,limit&&i==fp);    }    if(!limit)    dp[len][n]=ret;    return ret;}long long get_num(long long x){    int len=0;    while(x)    {        num[len++]=x%10;        x=x/10;    }    return dfs(len-1,0,1);}int main(){    long long n,m;    memset(dp,-1,sizeof(dp));    while(cin>>n>>m)    {       long long ans=get_num(m)-get_num(n-1);       cout<<ans<<endl;    }    return 0;}


原创粉丝点击