CF1391C.Cyclic Permutations

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

A permutation of length nn is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation ( 22 appears twice in the array) and [1,3,4][1,3,4] is also not a permutation ( n=3n=3 but there is 44 in the array).

Consider a permutation pp of length nn , we build a graph of size nn using it as follows:

  • For every 1in1 \leq i \leq n , find the largest jj such that 1j<i1 \leq j < i and pj>pip_j > p_i , and add an undirected edge between node ii and node jj
  • For every 1in1 \leq i \leq n , find the smallest jj such that i<jni < j \leq n and pj>pip_j > p_i , and add an undirected edge between node ii and node jj

In cases where no such jj exists, we make no edges. Also, note that we make edges between the corresponding indices, not the values at those indices.

For clarity, consider as an example n=4n = 4 , and p=[3,1,4,2]p = [3,1,4,2] ; here, the edges of the graph are (1,3),(2,1),(2,3),(4,3)(1,3),(2,1),(2,3),(4,3) .

A permutation pp is cyclic if the graph built using pp has at least one simple cycle.

Given nn , find the number of cyclic permutations of length nn . Since the number may be very large, output it modulo 109+710^9+7 .

Please refer to the Notes section for the formal definition of a simple cycle

输入格式

The first and only line contains a single integer nn ( 3n1063 \le n \le 10^6 ).

输出格式

Output a single integer 0x<109+70 \leq x < 10^9+7 , the number of cyclic permutations of length nn modulo 109+710^9+7 .

输入输出样例

  • 输入#1

    4

    输出#1

    16
  • 输入#2

    583291

    输出#2

    135712853

说明/提示

There are 1616 cyclic permutations for n=4n = 4 . [4,2,1,3][4,2,1,3] is one such permutation, having a cycle of length four: 432144 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 4 .

Nodes v1v_1 , v2v_2 , \ldots , vkv_k form a simple cycle if the following conditions hold:

  • k3k \geq 3 .
  • vivjv_i \neq v_j for any pair of indices ii and jj . ( 1i<jk1 \leq i < j \leq k )
  • viv_i and vi+1v_{i+1} share an edge for all ii ( 1i<k1 \leq i < k ), and v1v_1 and vkv_k share an edge.
首页