前几天网络赛的一个题,找了下规律发现是要输出
2
n
−
1
2^{n-1}
2n−1,
1
1
1
≤
\leq
≤
n
n
n
≤
\leq
≤
1
0
200
10^{200}
10200,答案对1000000007取模,直接快速幂肯定超时。
百度了下,于是学到了费马小定理: 假如p是质数,且gcd(a,p)=1,那么
a
p
−
1
a^{p-1}
ap−1
≡
\equiv
≡ 1(mod p)
证明见百度百科
于是
a
n
a^{n}
an % 1000000007
≡
\equiv
≡
a
r
a^{r}
ar %
1000000007
1000000007
1000000007,其中
r
r
r
=
=
=
n
n
n %
1000000006
1000000006
1000000006
只需要在输入的时候用字符串存一个大数,遍历一次进行取模,就可以在int范围内跑快速幂了