Skip to content

Commit 2243eff

Browse files
committed
cf1943D2
1 parent e836f0c commit 2243eff

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

main/1900-1999/1943D2.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package main
2+
3+
import (
4+
. "fmt"
5+
"io"
6+
)
7+
8+
// https://github.com/EndlessCheng
9+
func cf1943D2(in io.Reader, out io.Writer) {
10+
var T, n, mx, mod int
11+
for Fscan(in, &T); T > 0; T-- {
12+
Fscan(in, &n, &mx, &mod)
13+
f := make([][]int, n+3)
14+
for i := range f {
15+
f[i] = make([]int, mx+1)
16+
}
17+
f[1][0] = 1
18+
preS := 1
19+
for i := 2; i < n+3; i++ {
20+
var s, ss, t int
21+
for j := mx; j >= 0; j-- {
22+
f[i][j] = (preS - ss) % mod
23+
t += f[i][j]
24+
s += f[i-2][mx-j]
25+
ss += s
26+
}
27+
preS = t
28+
}
29+
Fprintln(out, (f[n+2][0]+mod)%mod)
30+
}
31+
}
32+
33+
//func main() { cf1943D2(bufio.NewReader(os.Stdin), os.Stdout) }

main/1900-1999/1943D2.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
s[mx] = 0
2+
s[mx-1] = s[mx] + f[0]
3+
s[j] = s[j+1] + (f[0] + ... + f[mx - j - 1])

main/1900-1999/1943D2_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Generated by copypasta/template/generator_test.go
2+
package main
3+
4+
import (
5+
"github.com/EndlessCheng/codeforces-go/main/testutil"
6+
"testing"
7+
)
8+
9+
// https://codeforces.com/problemset/problem/1943/D2
10+
// https://codeforces.com/problemset/status/1943/problem/D2?friends=on
11+
func Test_cf1943D2(t *testing.T) {
12+
testCases := [][2]string{
13+
{
14+
`4
15+
3 1 998244853
16+
4 1 998244353
17+
3 2 998244353
18+
343 343 998244353`,
19+
`4
20+
7
21+
10
22+
456615865`,
23+
},
24+
}
25+
testutil.AssertEqualStringCase(t, testCases, 0, cf1943D2)
26+
}

0 commit comments

Comments
 (0)