日行一算(The Simple Problem - 等差数列)
题目
题目描述
Solo上了大学,对数学很感兴趣,有一天他面对数分三,一个Sequence(数列)摆在了他面前,这可难住他了……
序列如下:S(a,k,n)=a+(k+a)+(2k+a)+…+(nk+a),题目要他对序列求和,但是a、k、n的取值好多,他不知如何是好,于是他决定写个程序……
Can you get it?
题目数据范围:
0<=a<=100.
0<=k<=100.
0<=n<=100.
解答要求
时间限制:1000ms, 内存限制:100MB
输入
输入只有一行,包含三个整数a、k和n。
输出
根据输入的a、k和n,输出S(a,k,n)的值。
样例
输入样例 1
1 2 4
输出样例 1
25
提示样例 1
解题思路:
将S(a,k,n)=a+(k+a)+(2k+a)+…+(nk+a)转化为a(n+1)+(n+1)n/2*k
等差数列通项公式Sn = n(a1+an)/2
化简:
S(a,k,n)=a+(k+a)+(2k+a)+...+(nk+a)
=a(n+1)+k(1+2+...+n)
=a(n+1)+kn(n+1)/2
=(2a+kn)(n+1)/2
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
int k = scanner.nextInt();
int n = scanner.nextInt();
System.out.println((2*a+k*n)*(n+1)/2);
}