序列和(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
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
面试官_我太想进步了:混学生会的,难怪简历这么水
点赞 评论 收藏
分享
牛客771574427号:恭喜你,华杰
点赞 评论 收藏
分享
无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务