• 产生数


    【题目描述】

    给出一个整数n(n < 10^30)和k(k <= 15)个变换规则。规则:

    (1)一位数可变换成另一个一位数;

    (2)规则的右部不能为零;

    例如:n=234,有规则(k=2):

    2 --> 5

    3 --> 6

    上面的整数234经过变换后可能产生出的整数为(包括原数):

    234

    534

    264

    564

    共4种不同的产生数。

    现给出一个整数n和k个规则。

    求出经过任意次的变换(0次或多次),能产生出多少个不同整数。仅要求输出个数。

    【输入描述】

    输人格式为:
    n k
    x1 y1
    x2 y2
    ··· ···
    xn yn

    【输出描述】

    输出格式为一个整数(满足条件的个数)。

    【样例输入】

    234 2

    2 5

    3 6

    【样例输出】

    4

    源代码:
    
    #include<cstdio>
    #include<cstring>
    int k,num(0),Ans[31],i[10]={0};
    bool f[10][10]={0},F[10];
    char S[31];
    void DFS(int t,int T)
    {
        for (int a=1;a<10;a++)
          if (f[t][a]&&!F[a])
          {
              i[T]++;
              F[a]=true;
              DFS(a,T);
          }
    }
    void X(int t) //高精度依旧毒香四溢。
    {
        int K(0);
        for (int a=0;a<=num;a++)
        {
            int T=K;
            K=(Ans[a]*t+T)/10;
            Ans[a]=(Ans[a]*t+T)%10;
        }
        while (K)
        {
            Ans[++num]=K%10;
            K/=10;
        }
    }
    int main() //水水水。
    {
        scanf("%s%d",S,&k);
        for (int a=0;a<k;a++)
        {
            int T1,T2;
            scanf("%d%d",&T1,&T2);
            f[T1][T2]=true;
        }
        for (int a=0;a<10;a++)
        {
            memset(F,false,sizeof(F));
            i[a]++;
            F[a]=true;
              for (int b=1;b<10;b++)
              if (f[a][b]&&!F[b]) //知道真相的我眼泪掉下来。
              {
                i[a]++;
                F[b]=true;
                  DFS(b,a);
              }
        }
        int Length=strlen(S);
        Ans[0]=1;
        for (int a=0;a<Length;a++)
          X(i[S[a]-'0']);
        for (int a=num;a>=0;a--)
          printf("%d",Ans[a]);
        return 0;
    }
  • 相关阅读:
    Python——数据结构——字典
    Python——print()函数
    Python数据结构——序列总结
    elasticsearch全文检索java
    elasticsearch单例模式连接 java
    【转载】信号中断 与 慢系统调用
    设计模式——状态模式(C++实现)
    设计模式——观察者模式(C++实现)
    C++调用C方法
    设计模式——外观模式(C++实现)
  • 原文地址:https://www.cnblogs.com/Ackermann/p/5798528.html
Copyright © 2020-2023  润新知