蓝桥杯模拟题-排列序数

标题: 排列序数

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;
} 

写的心里没底,这种题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值