序列和(GoLang)
序列和
http://www.nowcoder.com/questionTerminal/46eb436eb6564a62b9f972160e1699c9
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 }