给定一个长度为n的字符串,问其字典序是多少....其实没什么难度,但是n最大到26,即答案最大为26!-1,用long long是必然WA的,所以要用高精度或者用两个long long存也可以,JAVA水过~ import java.math.*; import java.util.*; import java.*; public class Main{ public static void main(String [] args){ BigInteger[] ans=new BigInteger[30]; BigInteger ii=new BigInteger("1"); BigInteger m=new BigInteger("1"); int i; ans[0]=new BigInteger("0"); for(i=1;i<=26;i++){ ans[i]=ii; ii=ii.add(m); } Scanner cin = new Scanner(System.in); while(true){ int n=cin.nextInt(); if(n==0) break; String sss=cin.nextLine(); String str=cin.nextLine(); //System.out.println(str.charAt(0)-'A'); //String sssss=cin.nextLine(); BigInteger sum=new BigInteger("0"); int j,k,flag=0; for(j=0;j<n;j++){ int x=str.charAt(j)-'A'; BigInteger tem=BigInteger.valueOf(x); for(k=j-1;k>=0;k--){ if(str.charAt(k)<str.charAt(j)) tem=tem.subtract(m); } for(k=j+1;k<n;k++){ tem=tem.multiply(ans[26-k]); } sum=sum.add(tem); } System.out.println(sum); } } }