小红的部分不同字符串
题号:NC316147
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}有一个未知的长度为 n 的字符串,保证该字符串仅由 26 个小写英文字母组成。现有 n 个限制条件,用一个数组 a = \{a_1, a_2,\dots,a_n\} 表示,意为 s_i \ne s_{a_i}(即字符串中第 i 个字符与第 a_i 个字符不同)。
\hspace{15pt}请你计算在满足所有限制条件的情况下,有多少种不同的字符串。由于答案可能很大,请输出其对 998244353 取模的结果。

输入描述:

\hspace{15pt}第一行一个整数 n (2 \leqq n \leqq 2 \times 10^5),表示字符串长度。
\hspace{15pt}第二行 n 个整数 a_i\left(1 \leqq a_i \leqq n, a_i \ne i \right),代表数组 a

输出描述:

\hspace{15pt}输出一行一个整数,表示不同的字符串数量对 998244353 取模的结果。
示例1

输入

复制
2
2 1

输出

复制
650
示例2

输入

复制
6
5 1 4 1 1 4

输出

复制
253906250