2021-05-14
作者:互联网
P2524 Uim的情人节礼物·其之弐
记录:康托展开(感觉和之前的拔树和耕犁问题差不多……)基本上是c++实现的代码想着就把c的传上来了。
题目描述
前传:详见洛谷P2525
Uim成功地按照顺序将礼物送到了N个妹子的手里并维持她们的和谐。
Uim现在想知道,他最终选择的顺序是所有给N个妹子送礼顺序中、字典序第几小的。
输入格式
第一行一个整数N,表示有N个数。
第二行一个整数X,表示给出的排列。
输出格式
一个整数,表示是第几小的字典序。
输入输出样例
输入 #1
3 231
输出 #1
4
说明/提示
1<=N<=9
输入的排列没有空格
#include<stdio.h>
void kangtuo(int n, int *a, int* b)
{
int s[10]={0};
for(int i=0; i<n; i++)
{
s[i]=1;
}
for(int i=n-1; i>=0; i--)
{
s[a[i]-1]=0;
for(int j=a[i]-1; j>=0; j--)
{
b[i]+=s[j];
}
}
}
int main()
{
int n,x;
scanf("%d%d",&n,&x);
int a[9]={0};
int t=x;
int b[10]={0};
//逆序存放
for(int i=0; i<n; i++)
{
a[i]=t%10;
t/=10;
}
int ans=0;
int xishu=1;
kangtuo(n,a,b);
for(int i=1; i<n; i++)
{
xishu*=i;
ans+=b[i]*xishu;
}
printf("%d",ans+1);
return 0;
}
标签:10,14,第几,05,int,Uim,整数,--,2021 来源: https://blog.csdn.net/DDL_8_00/article/details/116810212