题目描述
一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列。在这个问题中a是一个非负的整数,b是正整数。 现给出三个整数,分别表示等差数列的第一项a、最后一项和公差b,求该数列的和。
输入描述:
输入三个整数,之间用空格隔开。第1个数作为首项,第2个数作为末项,第3个数作为公差.
输出描述:
输出占一行,包含一个整数,为该等差数列的和。如果所给三个整数,不能构成等差数列,则返回-1。
示例
输入 2 11 3
输出 26
class Solution:
def __init__(self) -> None:
pass
def solution(self):
num = input().strip().split(' ')
a = int(num[0]) #首项
m = int(num[1]) #末项
k = int(num[2]) #公差
if (m - a) % k == 0:
n = int((m - a) / k)
if a == 0:
return f(n, m, k)
else:
return f(n + 1, m, k)
else:
return -1
def f(n, m, k):
if n == 1:
return m
else:
return m + f(n - 1, m - k, k)
if __name__ == "__main__":
s = Solution()
print(s.solution())