建议访问原文出处,获得更佳浏览体验。
原文出处:https://hyp1231.github.io/2018/09/01/20180901-2018nanjing-online-a/
题意
定义
Sn=∑i=1ni×i!
S
n
=
∑
i
=
1
n
i
×
i
!
,求
Sn−1(modn)
S
n
−
1
(
mod
n
)
。
链接
A. An Olympian Math Problem
题解
Sn−1(modn)=[1×1!+2×2!+…+(n−1)×(n−1)! ]=[1×1!+2×2!+…+(n−1)×(n−1)! − n! ]=[1×1!+2×2!+…+(n−1)×(n−1)! − n×(n−1)! ]=[1×1!+2×2!+…+(n−1−n)×(n−1)! ]=[1×1!+2×2!+…+(n−2)×(n−2)! − (n−1)! ]=⋯=−1(modn)=n−1(modn)(modn)(modn)(modn)(modn)(160)(161)(162)(163)(164)(165)(166)(167)
(160)
S
n
−
1
(
mod
n
)
=
[
1
×
1
!
+
2
×
2
!
+
…
+
(
n
−
1
)
×
(
n
−
1
)
!
]
(
mod
n
)
(161)
=
[
1
×
1
!
+
2
×
2
!
+
…
+
(
n
−
1
)
×
(
n
−
1
)
!
−
n
!
]
(
mod
n
)
(162)
=
[
1
×
1
!
+
2
×
2
!
+
…
+
(
n
−
1
)
×
(
n
−
1
)
!
−
n
×
(
n
−
1
)
!
]
(
mod
n
)
(163)
=
[
1
×
1
!
+
2
×
2
!
+
…
+
(
n
−
1
−
n
)
×
(
n
−
1
)
!
]
(
mod
n
)
(164)
=
[
1
×
1
!
+
2
×
2
!
+
…
+
(
n
−
2
)
×
(
n
−
2
)
!
−
(
n
−
1
)
!
]
(
mod
n
)
(165)
=
⋯
(166)
=
−
1
(
mod
n
)
(167)
=
n
−
1
Hint:
n!(modn)=0
n
!
(
mod
n
)
=
0
。
代码
#include <cstdio>
int main() {
int T; long long n;
scanf("%d", &T);
while (T--) {
scanf("%lld", &n);
printf("%lld\n", n - 1);
}
return 0;
}