【问题描述】
对于一个排列 A = (a 1 ,a 2 ,··· ,a n ),定义价值 c i 为 a 1 至 a i−1 中小于 a i 的数
的个数,即 b i = |{a j |j < i,a j < a i }|。定义 A 的价值为
∑ n
i=1 c i 。
给定 n,求 1 至 n 的全排列中所有排列的价值之和。
【输入格式】
输入一行包含一个整数 n 。
【输出格式】
输出一行包含一个整数表示答案,由于所有排列的价值之和可能很大,请
输出这个数除以 998244353 的余数。
【样例输入 1】
3
【样例输出 1】
9
【样例输入 2】
2022
【样例输出 2】
593300958
md=998244353
n=int(input())
res=1
i=1
while i<=n:
res*=i
res=res%md
i+=1
k=0.5
t=0.5
for i in range(2,n):
k+=0.5
t+=k
print(int(t*res%md))
用暴力法找规律,推公式。时间复杂度O(n)