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

    模板题

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int a[10],len,b,two[10];
    int dp[10][6000];
    int dfs(int pos,int up,bool lim)
    {
        if(pos==0)return 1;
        if(!lim&&dp[pos][up]!=-1)return dp[pos][up];
        int Max=lim?a[pos]:9;
        int ret=0;
        for(int i=0;i<=Max;++i)
        {
            if(i*two[pos]>up)break;
            ret+=dfs(pos-1,up-i*two[pos],lim&&i==Max);
        }
        if(!lim)dp[pos][up]=ret;
        return ret;
    }
    int solve(int x)
    {
        len=0;
        while(x)
        {
            a[++len]=x%10;
            x/=10;
        }
        return dfs(len,b,1);
    }
    int main()
    {
        //freopen("Input.txt","r",stdin);
        memset(dp,-1,sizeof dp);
        two[1]=1;for(int i=2;i<=9;++i)two[i]=two[i-1]*2;
        int T;scanf("%d",&T);
        for(int Case=1;Case<=T;++Case)
        {
            int m,n,tmp=1;
            scanf("%d%d",&m,&n);
            b=0;
            while(m)
            {
                b+=m%10*tmp;
                m/=10;tmp*=2;
            }
            printf("Case #%d: %d
    ",Case,solve(n));
        }
    }
    
  • 相关阅读:
    微服务全链路剖析
    记一次被挖矿经历
    centos权限总结
    Beizer。。。。。
    遇到的几个算法
    程序截图
    CFileViewer(文件浏览器)
    框架设计
    git常用代码
    右值引用
  • 原文地址:https://www.cnblogs.com/maoruimas/p/9715642.html
Copyright © 2011-2022 走看看