zoukankan      html  css  js  c++  java
  • HDU 4734 F(x)

    这题可能非递归版好写?

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int t,a,b,dp[12][5000],ret=0,bit[12];
    void get_table()
    {
        for (int i=0;i<=9;i++) dp[1][i]=1;
        for (int i=0;i<=4599;i++) dp[0][i]=1;
        for (int i=2;i<=8;i++)
            for (int j=0;j<=4599;j++)
                for (int k=0;k<=9;k++)
                    if (j>=k*(1<<(i-1))) dp[i][j]+=dp[i-1][j-k*(1<<(i-1))];
        for (int i=1;i<=8;i++)
            for (int j=1;j<=4599;j++)
                dp[i][j]+=dp[i][j-1];
    }
    void get_bit(int x)
    {
        ret=0;
        while (x) {bit[++ret]=x%10;x/=10;}
    }
    int f(int x)
    {
        get_bit(x);int ans=0;
        for (int i=ret;i>=1;i--) ans=(ans<<1)+bit[i];
        return ans;
    }
    int dfs(int pos,int ret)
    {
        if (!pos) return 1;
        int i,ans=0;
        for (i=0;i<bit[pos];i++)
        {
            if (ret>=i*(1<<(pos-1)))
                ans+=dp[pos-1][ret-i*(1<<(pos-1))];
            else break;
        }
        if (i!=bit[pos]) return ans;
        if (ret>=bit[pos]*(1<<(pos-1))) ans+=dfs(pos-1,ret-bit[pos]*(1<<(pos-1)));
        return ans;
    }
    void work(int x)
    {
        int ff=f(a);get_bit(b);
        printf("Case #%d: %d
    ",x,dfs(ret,ff));
    }
    int main()
    {
        scanf("%d",&t);get_table();    
        for (int i=1;i<=t;i++)
        {
            scanf("%d%d",&a,&b);
            work(i);
        }
        return 0;
    }
  • 相关阅读:
    PowerDesigner将PDM导出生成WORD文档
    哨兵机制
    redis 主从数据同步
    redis RDB
    redis AOF机制
    redis数据结构
    dependencyManagement 和 dependencies的区别
    同源策略 跨域资源共享
    高可用 可扩展 多层反向代理架构演进
    String 杂记
  • 原文地址:https://www.cnblogs.com/ziliuziliu/p/6219981.html
Copyright © 2011-2022 走看看