原题入口
小明在上数学课,课上老师说需要求等差为1的等差数列的和,这个很简单。
但是小明想到,如果在某一刻,等差变为了-1,再进行求和怎么解?
你能帮帮他嘛?
例子:首项为5,在第5项也就是9的时候等差变为了-1,末项为6,那么这个数列的和是5+6+7+8+9+8+7+6=56
输入:首项的值i,在第j项的时候等差变为了-1,末项的值k
输出:数列的和
样例
例1:
输入:i = 5, j = 9, k = 6
输出:56
例2:
输入:i = 5, j = 5, k = 5
输出:5
public class Solution {
/**
* @param i:
* @param j:
* @param k:
* @return: nothing
*/
public long equlSum(long i, long j, long k) {
// Write your code here
if (i == j && j == k) return i;
return symmetrySum(i, j) + symmetrySum(k, j - 1);
}
public long symmetrySum(long x, long y) {
if (x == y) return x;
long z = (y - x + (y - x) % 2) / 2;
return (x + y) * z + (x + z) * ((y - x - 1) % 2);
}
}