zoukankan      html  css  js  c++  java
  • Little Elephant and Elections小象选举

      在我正看着roll神的博客的时候发现了自己的错误

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <climits>
    #include <string>
    #include <iostream>
    #include <map>
    #include <cstdlib>
    #include <list>
    #include <set>
    #include <queue>
    #include <stack>
    using namespace std;
    typedef long long LL;
    LL ans;
    const LL mod= 1000000007 ;
    LL dp[100][100];
    LL up[1000];
    LL Hash[100];
    LL dfs(LL now,LL sum,LL flag)
    {
        if(sum>ans) return 0;
        if(now<=0) return sum==ans;
        if(!flag&&~dp[now][sum]) return dp[now][sum];
        LL limit= flag? up[now]:9,ret=0;
        for(LL i = 0;i<= limit;i++){
            if(i==4||i==7) ret+=dfs(now-1,sum+1,flag&&i==limit);
            else ret+=dfs(now-1,sum,flag&&i==limit);
        }
        return flag? ret : dp[now][sum]=ret;
    }
    LL  solve(LL x)
    {
        LL len=0;
        while(x){
            up[++len]=x%10;
            x/=10;
        }
        return dfs(len,0,1);
    }
    
    LL len;
    LL ans1=0;
    void gao(LL dep,LL left,LL w)
    {
        w%=mod;
        if(dep==0){
            ans1+=w;ans1%=mod;return ;
        }
        for(LL i= 0;i<=left;i++){
            if(Hash[i])gao(dep-1,left-i,w*Hash[i]--),Hash[i]++;
        }
    }
    int main()
    {
        LL n;
        cin>>n;
        memset(Hash,0,sizeof(Hash));
        for(ans=0 ;ans<10;ans++){
            memset(dp,-1,sizeof(dp));//需要重新初始化。
            Hash[ans]= solve(n) - solve(0);
        }
        len=10;
        while(!Hash[len]) len--;
        for(LL i = 1;i<=len;i++)
            if(Hash[i])gao(6,i-1,Hash[i]);
        cout<<ans1<<endl;
        return 0;
    }
  • 相关阅读:
    shutil模块详解
    pycharm连接服务器
    python中__name__属性的使用
    ORM学习笔记
    ORM连表操作
    python操作mysql实例
    python登录项目
    pycharm建立第一个django工程-----windows中
    打印顺序
    shell脚本
  • 原文地址:https://www.cnblogs.com/yigexigua/p/3897416.html
Copyright © 2011-2022 走看看