B2032 题解

· · 题解

水题解

因为是入门与面试题库所以题解要写详细一些?

Description

给定等差数列的前两项 a_1,a_2n,求 a_n

Solution

等差数列是任意两项之间的差一定的递增或递减序列,两项之间的差 d 被称作公差(为了方便,我们直接定义 d 为后一项减前一项的值)。

按照公差的定义,我们就可以知道 d=a_2-a_1

知道了 da_1,我们可以尝试求一下 a_n

按照上面的思路,问题也就迎刃而解了。

\begin{aligned}a_n=a_1+(n-1)(a_2-a_1)\end{aligned}

Code

#include <bits/stdc++.h>

using namespace std;

int main () {
    int a1, a2, n;
    scanf("%d%d%d", &a1, &a2, &n);
    int d = a2 - a1; // 计算公差 
    int an = a1 + d * (n - 1); // 按照上面的递推思路计算 an 
    printf("%d\n", an);
    return 0;
}