@994495jj
2017-09-26T13:24:04.000000Z
字数 694
阅读 666
(ACM)字符串----后缀数组 (ACM)数学----组合数学
import java.math.BigInteger;import java.util.Scanner;public class Main {static final int N=100005;static int a[] = new int[N];static int b[] = new int[N];public static void main(String[] args) {Scanner cin = new Scanner(System.in);int T=cin.nextInt();for(int ca=1;ca<=T;++ca) {int n=cin.nextInt();for(int i=1;i<=n;++i) a[i]=cin.nextInt();for(int i=1;i<=n;++i) b[a[i]]=i;int m=0;for(int i=1;i<n;++i) {if(b[a[i]+1]>b[a[i+1]+1]) ++m;}if(m>25) {System.out.println("0");continue;}n=n+25-m;m=25-m;BigInteger ans=BigInteger.ONE;for(int i=1;i<=m;++i) {ans=ans.multiply(BigInteger.valueOf(n+1-i));}for(int i=1;i<=m;++i) {ans=ans.divide(BigInteger.valueOf(i));}System.out.println(ans);}}}
