首页 > 试题广场 >

小红的排列生成

[编程题]小红的排列生成
  • 热度指数:212 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红拿到了一个数组,她可以操作若干次,每次操作可以选择一个元素加 1。
小红想知道,最多能生成多少种不同的排列?
定义:排列指长度为n的数组,1 到n每个元素都只出现了一次

输入描述:
第一行输入一个正整数n,代表数组的大小。
第二行输入n个正整数a_i,代表数组的元素。
1\leq n,a_i \leq 10^5


输出描述:
一个整数,代表最终可以形成不同排列的方案数。由于答案可能过大,请对10^9+7取模。
示例1

输入

3
1 2 1

输出

4

说明

[1,2,3],[3,2,1],[1,3,2],[2,3,1],共有以上四种排列。

这道题你会答吗?花几分钟告诉大家答案吧!