zoukankan      html  css  js  c++  java
  • nyoj 139 我排第几个--康拓展开

    我排第几个

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述

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

    输入
    第一行有一个整数n(0<n<=10000);
    随后有n行,每行是一个排列;
    输出
    输出一个整数m,占一行,m表示排列是第几位;
    样例输入
    3
    abcdefghijkl
    hgebkflacdji
    gfkedhjblcia
    样例输出
    1
    302715242
    260726926

    代码:

     1 #include "stdio.h"   //nyoj 139 我排第几个--康拓展开
     2 #include "string.h"
     3 
     4 #define N 15
     5 
     6 long long A(int x)  //求阶乘
     7 {
     8     long long ans = 1;
     9     for(int i=1; i<=x; ++i)
    10         ans = ans*i;
    11     return ans;
    12 }
    13 
    14 int main()
    15 {
    16     int T;
    17     int a[N];
    18     int num[N];
    19     char str[N];
    20     int i,j;
    21     scanf("%d",&T);
    22     getchar();
    23     while(T--)
    24     {
    25         scanf("%s",str);
    26         int len = strlen(str);
    27         for(i=0; i<len; ++i)
    28         {
    29             a[i] = str[i]-'a'+1;
    30             num[i] = a[i]-1;
    31         }
    32         long long ans = 0;
    33         for(i=0; i<len; ++i)
    34         {
    35             ans += num[i]*A(len-i-1);
    36             for(j=0; j<len; ++j)
    37             {
    38                 if(a[j]>a[i])
    39                     num[j]--;
    40             }
    41         }
    42         printf("%lld
    ",ans+1);
    43     }
    44     return 0;
    45 }



  • 相关阅读:
    Windows Server 2012 两台服务器文件同步
    Linux下非root用户运行Tomcat
    Linux离线安装mysql 5.6详细步骤
    spring再学习之整合JDBC
    spring再学习之AOP实操
    spring再学习之AOP准备
    spring再学习之注解
    spring再学习之配置详解
    spring再学习之基本概念
    spring再学习之简单测试
  • 原文地址:https://www.cnblogs.com/ruo-yu/p/4411974.html
Copyright © 2011-2022 走看看