Skip to content

Commit 4230940

Browse files
committed
use int
1 parent d51adba commit 4230940

File tree

1 file changed

+7
-19
lines changed

1 file changed

+7
-19
lines changed

Diff for: copypasta/odt.go

+7-19
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import "sort"
99
// 我的题解 https://www.luogu.com.cn/blog/endlesscheng/solution-cf896c
1010
type odtBlock struct {
1111
l, r int
12-
val int64
12+
val int
1313
}
1414

1515
type odt []odtBlock
1616

17-
func newODT(arr []int64) odt {
17+
func newODT(arr []int) odt {
1818
n := len(arr)
1919
t := make(odt, n)
2020
for i := range t {
@@ -49,7 +49,7 @@ func (t *odt) prepare(l, r int) (begin, end int) {
4949

5050
// 以下方法传入的 begin, end 来自事先计算的 t.prepare
5151

52-
func (t *odt) merge(begin, end, r int, val int64) {
52+
func (t *odt) merge(begin, end, r, val int) {
5353
ot := *t
5454
ot[begin].r = r
5555
ot[begin].val = val
@@ -58,13 +58,13 @@ func (t *odt) merge(begin, end, r int, val int64) {
5858
}
5959
}
6060

61-
func (t odt) add(begin, end int, val int64) {
61+
func (t odt) add(begin, end, val int) {
6262
for i := begin; i < end; i++ {
6363
t[i].val += val
6464
}
6565
}
6666

67-
func (t odt) kth(begin, end, k int) int64 {
67+
func (t odt) kth(begin, end, k int) int {
6868
blocks := append(odt(nil), t[begin:end]...)
6969
sort.Slice(blocks, func(i, j int) bool { return blocks[i].val < blocks[j].val })
7070
k--
@@ -78,22 +78,10 @@ func (t odt) kth(begin, end, k int) int64 {
7878
panic(k)
7979
}
8080

81-
func (odt) pow(x int64, n int, mod int64) int64 {
82-
x %= mod
83-
res := int64(1) % mod
84-
for ; n > 0; n >>= 1 {
85-
if n&1 == 1 {
86-
res = res * x % mod
87-
}
88-
x = x * x % mod
89-
}
90-
return res
91-
}
92-
93-
func (t odt) powSum(begin, end int, n int, mod int64) (res int64) {
81+
func (t odt) powSum(begin, end int, n int) (res int) {
9482
for _, b := range t[begin:end] {
9583
// 总和能溢出的话这里要额外取模
96-
res += int64(b.r-b.l+1) * t.pow(b.val, n, mod)
84+
res += (b.r - b.l + 1) * pow(b.val, n)
9785
}
9886
return res % mod
9987
}

0 commit comments

Comments
 (0)