zoukankan      html  css  js  c++  java
  • luogu P1037 产生数

    原题链接:https://www.luogu.org/problem/show?pid=1037

    首先,我不知道标签的搜索是哪里来的,这明明就是个Floyd+乘法原理

    首先0—9每个数自己想自己连边,然后读入给出的边,跑一边Floyd,因为此题并没有要求步数的要求,所以只需要记录能否到达即可。1为能到达。

    然后统计每一个数字都能到达几个数字(本身也算),将所有结果乘起来,用高精度处理一下就好了

    #include<cstdio>
    #include<cstring>
    int n,e[20][20];
    int num[20],ans[50],l;
    char a[50];
    int main()
    {
        scanf("%s %d",a,&n);
        for(int i=1;i<=n;i++)
        {
            int x,y;
            scanf("%d %d",&x,&y);
            e[x][y]=1;
        }
        for(int i=0;i<=9;i++) e[i][i]=1;
        for(int k=0;k<=9;k++)
        {
            for(int i=0;i<=9;i++)
            {
                for(int j=0;j<=9;j++)
                {
                    if(e[i][k]==1&&e[k][j]==1) e[i][j]=1;
                }
            }
        }
        int len=strlen(a);
        for(int i=0;i<len;i++)
        {
            int s=a[i]-'0';
            for(int j=0;j<=9;j++)
            {
                if(e[s][j]==1) num[i]++;  
            }
        }
        ans[0]=1;
        for(int i=0;i<len;i++)
        {
            for(int j=0;j<=l;j++) ans[j]*=num[i];
            for(int j=0;j<=l;j++)
            {
                if(ans[j]>9)
                {
                    ans[j+1]+=ans[j]/10;
                    ans[j]%=10;
                }
            }
            if(ans[l+1]!=0) l++;
        }
        for(int i=l;i>=0;i--) printf("%d",ans[i]);
        return 0;
    }
  • 相关阅读:
    JS——jquery UI
    js——正则表达式
    jsonp——使用公共接口获取数据
    JS——json、ajax、jsonp
    [HNOI2011]括号修复 / [JSOI2011]括号序列
    [HNOI 2016] 树
    luogu_P3313 [SDOI2014]旅行
    无旋Treap模板
    [CF 718C] Sasha and Array
    [洛谷 P4556] 雨天的尾巴
  • 原文地址:https://www.cnblogs.com/zeroform/p/7693803.html
Copyright © 2011-2022 走看看