Go语言实现一个
基本思路
1 2 3 4 5 6 7
前 n 个的和是:
1 : 1
2 : 3
3 : 6
4 : 10
...
例如: 对于给出的样例 18 2
长度应为 3
// sum(n) 表示从 1 开始前n个数的和
于是 18 - sum(3)(6) = 12 % 3 (0) 12 / 3 = 4
所以结果 为 1 2 3 全部加 4
5 6 7
基于这个思路可以得到下面的代码:
package main
import "fmt"
func main() {
var N, L int
var find = true
_, _ = fmt.Scanf("%d %d", &N, &L)
for find {
if move := (N - getSum(L)) / L; (N-getSum(L))%L == 0 {
for i := 1 + move; i < move+L; i++ {
fmt.Printf("%d ", i)
}
fmt.Print(move + L)
find = false
} else {
L++
}
if L > 100 {
fmt.Print("No")
find = false
}
}
}
func getSum(n int) int {
return (1 + n) * n /2
}

京公网安备 11010502036488号