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;
     } 
  • 相关阅读:
    【bzoj1010】[HNOI2008]玩具装箱toy
    bzoj 3173
    bzoj 1179
    bzoj 2427
    bzoj 1051
    bzoj 1877
    bzoj 1066
    bzoj 2127
    bzoj 1412
    bzoj 3438
  • 原文地址:https://www.cnblogs.com/a249189046/p/6664769.html
Copyright © 2011-2022 走看看