压位高精度整数 3.0

· · 科技·工程

代码

代码

操作

n=\lfloor\lg\max(a,b)+1\rfloor,w=8 表达式 含义 时间复杂度 空间复杂度 备注
a.to_string() astring表示 O(\dfrac{n}{w}) O(n)
a.to_long_long() along long表示 O(\dfrac{n}{w}) O(n)
a.to_binary() a 的二进制表示 O(\dfrac{n^2}{w}) O(n^2)
a.to_int128() a__int128表示 O(\dfrac{n}{w}) O(n)
a._digit_len() \lfloor \dfrac{n}{w} \rfloor O(1) O(1)
-a -a O(\dfrac{n}{w}) O(\dfrac{n}{w})
~a -a-1 O(\dfrac{n}{w}) O(\dfrac{n}{w})
a.abs() \mid a\mid O(\dfrac{n}{w}) O(\dfrac{n}{w})
a <=> b 求大小关系 O(\dfrac{n}{w}) O(\dfrac{n}{w})
a.div2() \lfloor \dfrac{a}{2} \rfloor O(\dfrac{n}{w}) O(\dfrac{n}{w})
a.divmod(b) 除法 + 取余(普通) O(\dfrac{n^2}{w}) O(\dfrac{n}{w})
a.divmod(b) 除法 + 取余(牛迭) O(\dfrac{n\log n}{w}) O(\dfrac{n\log n}{w})
a + b 加法 O(\dfrac{n}{w}) O(\dfrac{n}{w})
a - b 减法 O(\dfrac{n}{w}) O(\dfrac{n}{w})
a * b 乘法(普通) O(\dfrac{n^2}{w^2}) O(\dfrac{n}{w})
a * b 乘法(FFT) O(\dfrac{n\log n}{w}) O(n)
a / b 除法(普通) O(\dfrac{n^2}{w}) O(\dfrac{n}{w})
a / b 除法(牛迭) O(\dfrac{n \log n}{w}) O(\dfrac{n \log n}{w})
a % b 取余(普通) O(\dfrac{n^2}{w}) O(\dfrac{n}{w})
a % b 取余(牛迭) O(\dfrac{n \log n}{w}) O(\dfrac{n\log n}{w})
a.pow(x) 乘方(普通) O(\dfrac{n^2\log n\log x}{w}) O(nx)
a.pow(x,p) 乘方(取余) O(\dfrac{n^2\log n\log x}{w}) O(n)
a.root(x) \lfloor \sqrt[x]{a} \rfloor O(\dfrac{n \log n}{w}) O(\dfrac{n}{w})
a.sqrt() \lfloor \sqrt{a} \rfloor O(\dfrac{n \log n}{w}) O(\dfrac{n}{w})
a.gcd(b) \gcd(a,b) O(\dfrac{n^2}{w}) O(\dfrac{n}{w})
a.lcm(b) \operatorname{lcm}(a,b) O(\dfrac{n^2}{w}) O(\dfrac{n}{w})
a & b 按位与 O(n^2) O(n)
a \| b 按位或 O(n^2) O(n)
a ^ b 按位异或 O(n^2) O(n)
a << x a\cdot 2^x O(\dfrac{nx}{w}) O(n)
a >> x \lfloor \dfrac{a}{2^x} \rfloor O(\dfrac{nx}{w}) O(n)
a._move_l(x) a\cdot 10^{wx} O(\dfrac{n}{w}+x) O(\dfrac{n}{w}+x)
a._move_r(x) \lfloor \dfrac{a}{10^{wx}} \rfloor O(\dfrac{n}{w}-x) O(\dfrac{n}{w}-x)
random_big(x) 生成位数为 x 的随机正数 O(n) O(n)

优点