每日一题 3

该博客探讨了等差数列在某一点由正差变为负差时如何计算总和的问题。给出了一个Java代码示例,展示了如何解决这种变化情况下的求和问题,包括输入首项、转折项和末项,输出数列的总和。通过样例解释了算法的工作原理。
摘要由CSDN通过智能技术生成

原题入口
小明在上数学课,课上老师说需要求等差为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);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值