NSOJ 我排第几个



我排第几个

时间限制: 1000ms
内存限制: 128000KB
64位整型:      Java 类名:
类型: 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •                   
  • 题目描述

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

    输入

    第一行有一个整数n(0<n<=10000);
    随后有n行,每行是一个排列;

    输出

    输出一个整数m,占一行,m表示排列是第几位;

    样例输入

    3
    abcdefghijkl
    hgebkflacdji
    gfkedhjblcia
    

    样例输出

    1
    302715242
    260726926
    

    来源


    #include<stdio.h>
    int main()
    {
    	int t;
    	scanf("%d",&t);
    	while(t--)
    	{
    		char str[13],i,j,k;
    		long long int sum=1,term=1;
    		scanf("%s",str);
    		for(i=0;i<12;i++)
    		{
    			term=1;k=0;
    			for(j=i+1;j<12;j++)
    			if(str[i]>str[j])
    			 k++;
    			 for(j=1;j<=11-i;j++)
    			 term=term*j;
    			 sum+=term*k;
    		}
    		printf("%lld\n",sum);
    	}
    	return 0;
    }


    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值