传送门
题意:对于题目给定的一个数组,取出一个数把比该数大的数都进行减一,求最后数组所有可能出现的额情况
思路:对数组进行排序,
a[n-1]!=a[n],那么a[n]可以不变,也可以最多减到a[n-1],因此方案数为(a[n]-a[n-1]+1).
当a[n]减到a[n-1]时,之后的操作和a[n-1]同步了,可以看作合并了,直接不管.
AC代码:
package 练习;
import java.io.*;
import java.lang.*;
import java.math.BigInteger;
import java.util.*;
public class Main{
static Scanner scanner=new Scanner(System.in);
static int mod=(int) (1e9+7);
public static void main(String[] args) {
int n=scanner.nextInt();
int a[]=new int [n+1];
for(int i=1;i<=n;i++){
a[i]=scanner.nextInt();
if(a[i]==a[i-1]){
i--;n--;
}
}
Arrays.sort(a,1,n+1);
long last=1;
a[0]=0;
for(int i=n;i>=1;i--){
last=(last*(a[i]-a[i-1]+1))%mod;
}
System.out.println(last);
}
}