题解 | #序列和#go语言滑动窗口
序列和
https://www.nowcoder.com/practice/46eb436eb6564a62b9f972160e1699c9
package main
import (
"fmt"
)
func main() {
N, L := 0, 0
fmt.Scanf("%d %d", &N, &L)
//suml := 0
sum := add(L)
if sum > N {
fmt.Printf("No")
return
}
l := 0
r := L - 1
minlen := 9999
resl := l
//0 1 2 3 4 5 6 7 8 9 //543792409 57
for r < N/2 && l <= r {
if sum == N {
if r-l+1 < minlen && r-l+1 >= L {
resl = l
minlen = r - l + 1
}
l++
sum -= l - 1
}else if sum < N {
r++
sum += r
}else{}
for sum > N{ //真的奇葩了
l++
sum -= l - 1
}
}
out(resl, minlen)
}
func add(n int) int {
sum := 0
for i := 0; i < n; i++ {
sum += i
}
return sum
}
func out(l, leng int) {
if leng > 100 {
fmt.Printf("No")
return
}
for i := l; i < l+leng; i++ {
fmt.Printf("%d ", i)
}
}