zoukankan      html  css  js  c++  java
  • luogu_P4163 [SCOI2007]排列

    ---恢复内容开始---

    https://www.luogu.org/problem/P4163

    给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0)。


    注意是所有数字都要用上

    #include<iostream> 
    #include<cstdio>
    #include<cstring>
    
    #define ri register int
    #define u long long
    #define NN 1005
    
    using std::string; 
    using std::cin;
    
    namespace all {
        
        u a[15],k,len,ans,t;
        
        void dfs(const u &x,const u &n){
            if(n==len&&((x/k)*k==x)) ++ans;
            for(ri i(0);i<=9;++i){
                if(a[i]){
                    --a[i];
                    dfs(x*10+i,n+1);
                    ++a[i];
                }
            }
        }
        
        inline void solve(){
            u N;
            cin>>N;
            for(ri cas(1);cas<=N;++cas){
                string _s;
                ans=0;
                cin>>_s>>k;
                len=(_s.length());
                memset(a,0,sizeof(a));
                for(ri i(0);i<len;++i) ++a[_s[i]-'0'];
                dfs(0,0);
                printf("%d
    ",ans);
            }
        }
        
    }
    
    int main() {
        
        //freopen("x.txt","r",stdin);
        all::solve();
        
    }

    ---恢复内容结束---

    #include<iostream>
    #include<cstdio>
    #include<cstring>

    #define ri register int
    #define u long long
    #define NN 1005

    using std::string;
    using std::cin;

    namespace all {

    u a[15],k,len,ans,t;

    void dfs(const u &x,const u &n){
    if(n==len&&((x/k)*k==x)) ++ans;
    for(ri i(0);i<=9;++i){
    if(a[i]){
    --a[i];
    dfs(x*10+i,n+1);
    ++a[i];
    }
    }
    }

    inline void solve(){
    u N;
    cin>>N;
    for(ri cas(1);cas<=N;++cas){
    string _s;
    ans=0;
    cin>>_s>>k;
    len=(_s.length());
    memset(a,0,sizeof(a));
    for(ri i(0);i<len;++i) ++a[_s[i]-'0'];
    dfs(0,0);
    printf("%d ",ans);
    }
    }

    }

    int main() {

    //freopen("x.txt","r",stdin);
    all::solve();

    }

  • 相关阅读:
    Wiggle Sort II
    Coin Change
    MPLS LDP 知识要点
    MPLS Aggreate & Untag
    Lab MPLS隐藏标签显示
    Lab MPLS过滤标签转发
    MPLS MTU Aggregation
    研究MPLS MTU的问题
    Lab 利用MPLS解决BGP路由黑洞
    MPLS 标签保留
  • 原文地址:https://www.cnblogs.com/ling-zhi/p/11731908.html
Copyright © 2011-2022 走看看