请问如何用高精度求最后500位数,求具体思路。谢谢!!!!!!!!

P1045 [NOIP2003 普及组] 麦森数

fujiaxu @ 2020-02-19 20:43:07

请问如何用高精度求最后500位数,求具体思路。谢谢!!!!!!!!


by t162 @ 2020-02-19 20:44:05

10^{500}取个模


by fujiaxu @ 2020-02-19 20:45:45

@Anticyclone 是把所有数算出来,在对它取模吗


by fujiaxu @ 2020-02-19 20:49:06

有人吗?


by 违规用户名76G!ihcm @ 2020-02-19 20:55:49

@fujiaxu 就算最后500不就行了,前面的不用管


by 离散小波变换° @ 2020-02-19 20:57:18

@fujiaxu

(a+b) \mod c &=((a \mod c)+(b \mod c)) \mod c\end{aligned}

你高精度直接不管500位之后的不就行了\dots


by 离散小波变换° @ 2020-02-19 20:58:25

\begin{aligned} a \times b \mod c &=(a \mod c) \times (b \mod c) \mod c \\ (a+b) \mod c &=((a \mod c)+(b \mod c)) \mod c\end{aligned}

by Spasmodic @ 2020-02-19 21:13:20

a\times b\bmod c=(a\bmod c)×(b\bmod c)\bmod c (a+b) \bmod c =((a \bmod c)+(b \bmod c)) \bmod c

修复完毕qwq


by fujiaxu @ 2020-02-19 21:22:36

谢谢大家!!


by td1336065617 @ 2020-04-03 10:46:40

快速幂 也可以呀 直接翻倍乘上去 滚动数组 我留了个2的1次方 怕滚不到能选的 就过了


by Jasper_H @ 2020-07-09 16:09:16

@fujiaxu 用高精度返回的是一个字符串,于是用c++里的substr(),判断长度是否大于500,然后截取后面500位就够了,因为输出只要500位,前面的没有必要存储


|