qdu 26 —— 康拓展开

来源:互联网 发布:使用python ddos攻击 编辑:程序博客网 时间:2024/06/09 17:53

排在第几个

发布时间: 2015年10月10日 18:05   时间限制: 1000ms   内存限制: 256M

现在有"abcdefghijkl”12个字符,将其所有的排列中按字典序排列,给出任意一种排列,说出这个排列在所有的排列中是第几小的?

每行输入一行字符串,保证是a~l这12个字符的某种排列
EOF结束

输出一个整数,代表这个排列排在第几位

 复制
abcdefghijklabcdefghikljgfkedhjblcia
14260726926

康拓模板题


#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <stack>#include <map>#include <cmath>#include <vector>#define max_ 10010#define inf 0x3f3f3f3f#define ll long longusing namespace std;int f[13];char tmp[13]={"abcdefghijkl"};char sent[max_];int main(int argc, char const *argv[]){int i,j;f[0]=f[1]=1;for(i=2;i<=12;i++)f[i]=f[i-1]*i;while(scanf(" %s",sent)!=EOF){ll sum=0;for(i=0;i<12;i++){int cnt=0;for(j=i+1;j<12;j++)if(sent[i]>sent[j])cnt++;sum=sum+f[12-i-1]*cnt;}printf("%lld\n",sum+1 );}}



原创粉丝点击