zoukankan      html  css  js  c++  java
  • 蓝桥杯 模拟 排列序数

    题目描述

    X星系的某次考古活动发现了史前智能痕迹。
    这是一些用来计数的符号,经过分析它的计数规律如下:
    (为了表示方便,我们把这些奇怪的符号用a~q代替)

    abcdefghijklmnopq 表示0
    abcdefghijklmnoqp 表示1
    abcdefghijklmnpoq 表示2
    abcdefghijklmnpqo 表示3
    abcdefghijklmnqop 表示4
    abcdefghijklmnqpo 表示5
    abcdefghijklmonpq 表示6
    abcdefghijklmonqp 表示7
    .....

    在一处石头上刻的符号是:
    bckfqlajhemgiodnp

    输入

    请你计算出它表示的数字是多少?
     
    分析 本题涉及到了康托展开 
     
    放一个介绍康托展开的链接 http://blog.csdn.net/zhongkeli/article/details/6966805
     
    要注意的是阶乘的函数返回值为long long
     
    储存数目的变量也要定义为long long
     
    代码
    #include <bits/stdc++.h>
    using namespace std;
    int vis[200];
    char c[200];
    long long  fac(int x)
    {
        if(x==1)
        return 1;
        else
        return x*fac(x-1);
    }
    int main()
    {
        long long sum;
        memset(vis,0,sizeof(vis));
       int h;
        while(cin>>c)
        {
            sum=0;
            h=0;
          int L=strlen(c);
          for(int i=0;i<L-1;i++)
          {
              h=0;
                vis[c[i]]=1;
                for(int j='a';j<c[i];j++)
                 {
                       if(!vis[j])
                       h++;
                }
                sum+=(h*fac(16-i));
              cout<<" "<<sum<<endl;
          }
          cout<<sum<<endl;
         
        }
        return 0;
     } 
  • 相关阅读:
    职业生涯系列
    自我进修系列
    每周问题系列
    职业生涯系列
    软件测试专用名词
    Java系列 – 用Java8新特性进行Java开发太爽了(续)
    Java系列
    EJB系列
    EJB系列
    EJB系列
  • 原文地址:https://www.cnblogs.com/a249189046/p/6664769.html
Copyright © 2011-2022 走看看