蓝桥杯模拟题-排列序数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sb_Ihateyou/article/details/68485927

标题: 排列序数

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

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

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

请你计算出它表示的数字是多少?

请提交该整数,不要填写任何多余的内容,比如说明或注释。

答案:22952601027516

康托展开

#include"iostream"
#include"algorithm"
typedef long long ll;
using namespace std;

ll jiec(int n)
{
    if(n==1)  return 1;

    return n*jiec(n-1);

}
int main()
{
    bool sign[20]={0};
    //char bi[20]={"abcdefghijklmnopq"};
    char ai[20]={"bckfqlajhemgiodnp"};
    ll sum=0;
    for(int i=0;i<16;i++)
    {
        int num=0;
        for(int j=0;j<(ai[i]-'a');j++)
            if(!sign[j])
                num++;
        sum+=(num)*jiec(16-i);
        sign[ai[i]-'a']=true;
    }
    cout<<sum<<endl;
    return 0;
} 

写的心里没底,这种题

阅读更多

没有更多推荐了,返回首页