首页 > 试题广场 >

小红的排列生成

[编程题]小红的排列生成
  • 热度指数:337 时间限制: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],共有以上四种排列。
头像 丨阿伟丨
发表于 2025-09-15 13:53:08
题目链接 小红的排列生成 题目描述 给定一个长度为 的数组。我们可以进行任意次操作,每次操作选择一个元素并将其值加 1。 我们的目标是将这个数组变成一个 到 的排列(即 到 中的每个数都恰好出现一次)。 问题是:总共能生成多少种不同的最终排列?答案需要对 取模。 解题思路 要将原数组 展开全文