2867: 【例57.1】 字典序第几小

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:2

题目描述

从$1$开始到$n$($1≤n≤9$)这$n$个数字一共可以组成$n!$个不同的排列。现在给出其中一个排列,求它是所有排列中字典序第几小的排列?

输入

第一行一个整数 $n$。
第二行一个整数 $x$,是由 $1$ 到 $n$ 这 $n$ 个数字组成的某个排列。

输出

一个整数,表示该排列是字典序第几小的。

样例输入 复制

4
2143

样例输出 复制

8

提示

#include<bits/stdc++.h>
using namespace std;
int n,cnt;
char c;
vector<int> a,b;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>c;b.push_back(c-48) ;
        a.push_back(i);
    }
    do{
        cnt++;
        if(a==b) break;
    }while(next_permutation(a.begin(),a.end()));
    cout<<cnt;
    return 0;
}