本文主要是介绍139 我排第几个,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
我排第几个
时间限制: 1000 ms | 内存限制: 65535 KB
难度: 3
- 描述
-
现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?
- 输入
- 第一行有一个整数n(0<n<=10000);
随后有n行,每行是一个排列; 输出 - 输出一个整数m,占一行,m表示排列是第几位; 样例输入
-
3 abcdefghijkl hgebkflacdji gfkedhjblcia
样例输出 -
1 302715242 260726926
- 第一行有一个整数n(0<n<=10000);
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;int num(char *s,int n)
{int num=0,i;for(i=0;i<n;i++)if(s[i]<s[n])num++;return num;
}int main()
{int n,i,j,sum,x;int a[12];char s[13];scanf("%d",&n);while(n--){sum=1;j=12;x=2*3*4*5*6*7*8*9*10*11*12;scanf("%s",s);memset(a,0,12);for(i=0;i<12;i++){x/=j;j--;sum+=(s[i]-'a'-num(s,i))*x;}printf("%d\n",sum);}
}
这篇关于139 我排第几个的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!