日行一算(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);
    }
posted @ 2022-02-23 09:57  dawa大娃bigbaby  阅读(160)  评论(0编辑  收藏  举报