1 条题解

  • 0
    @ 2025-8-24 21:02:49

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 一只书虫仔
    End.

    搬运于2025-08-24 21:02:48,当前版本为作者最后更新于2021-07-03 08:32:06,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    水题解

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

    Description

    给定等差数列的前两项 a1,a2a_1,a_2nn,求 ana_n

    Solution

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

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

    知道了 dda1a_1,我们可以尝试求一下 ana_n

    • a2=a1+da_2=a_1+d
    • a3=a2+d=a1+2da_3=a_2+d=a_1+2d
    • a4=a3+d=a1+3da_4=a_3+d=a_1+3d
    • \cdots
    • an=an1+d=a1+(n1)da_n=a_{n-1}+d=a_1+(n-1)d

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

    $$\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;
    }
    
    • 1

    信息

    ID
    6889
    时间
    1000ms
    内存
    128MiB
    难度
    1
    标签
    递交数
    2
    已通过
    2
    上传者