题解 | #序列和#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) } }