📅  最后修改于: 2023-12-03 15:07:33.756000             🧑  作者: Mango
这是一道来自于印度ISRO CS 2011年的编程题,题目如下:
给定两个整数n和m,编程计算以下数列的和:
S = 1 + 2 + 3 + ... + m + n + n-1 + ... + 1
函数原型: int sum(int n,int m);
输入:两个整数n和m(0≤n≤104,0≤m≤104)
输出:计算数列S的值并返回
根据题目的描述,题目要求计算一个数列的和,这个数列可以拆分成两个数列的和,通过分别计算两个数列的和,最后将两个和加起来即可。
首先求前半部分的和,可以循环从 1 到 n,每次将循环变量 i 的值相加即可。然后求后半部分的和,可以循环从 n-1 到 1,每次将循环变量 i 的值相加即可。两个求和的结果相加即为最终的答案。
def sum(n, m):
# 计算前半部分的和
sum1 = sum(range(1, n+1))
# 计算后半部分的和
sum2 = sum(range(n-1, 0, -1))
# 求和
return sum1 + sum2 + m
assert sum(2, 4) == 10
assert sum(5, 10) == 70
assert sum(0, 100) == 5050