luogu_1037 产生数

Posted Code_Together

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu_1037 产生数相关的知识,希望对你有一定的参考价值。

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
char a[32];
int k,in[15],ans[1010];
bool d[15][15],vis[15];

void mul(int x){
    for(int i=ans[0];i;i--){
        ans[i]*=x;
        ans[i+1]+=ans[i]/10;
        ans[i]%=10;
    }
    for(int i=1;i<=ans[0];i++)ans[i+1]+=ans[i]/10,ans[i]%=10; 
    while(ans[ans[0]+1])ans[0]++;
}

int dfs(int now){
    int sum=1;
    vis[now]=1;
    for(int i=1;i<=9;i++)
        if(d[now][i] && !vis[i])sum+=dfs(i);
    return sum;
}

int main(){
    ans[0]=ans[1]=1;
    scanf("%s%d",&a,&k);
    while(k--){
        int u,v;
        scanf("%d%d",&u,&v);
        d[u][v]=1;
    }
    for(int i=0;i<=9;i++){
        memset(vis,0,sizeof(vis));
        in[i]=dfs(i);
    }
    for(int i=0;i<strlen(a);i++)mul(in[a[i]-‘0‘]);
    for(int i=ans[0];i;i--)printf("%d",ans[i]);
    puts("");
    return 0;
}

  

 

以上是关于luogu_1037 产生数的主要内容,如果未能解决你的问题,请参考以下文章

[luoguP1037] 产生数(floyd + 高精度)

bzoj 1037 [ZJOI2008]生日聚会Party dp

「CF1037D」Valid BFS?

CF1037D Valid BFS?

luogu_4317: 花神的数论题

luogu2822 组合数问题