• AcWing 1289. 序列的第k个数


    一.题目链接

    二.思路

    一共T组测试数据,给出一个数列的前三项a,b,c。判断是等差数列还是等比数列,求该数列的第k项。

    • 性质:一个数列既是等差数列又是等比数列 当且仅当 a = b = c。
      第一步:判断是等差还是等比
      情况1:公差: d = b − a d = b - a d=ba 答案: a n s = a + ( k − 1 ) d ans = a + (k - 1)d ans=a+(k1)d
      情况2:公比: q = b a q = \frac{b}{a} q=ab 答案: a n s = a ∗ p k − 1 ans = a * p^{k - 1} ans=apk1
      第二步:当为公比的时候,直接用快速幂求解即可。

    三.代码

    #include 
    #include 
    #include 
    
    using namespace std;
    const int mod = 200907;
    typedef long long ll;
    //快速幂
    int qmi(int a, int b)
    {
        int res = 1;
        while(b)
        {
            if(b & 1) res = (ll) res * a % mod;
            a = (ll)a * a % mod;
            b >>= 1;
        }
        return res;
    }
    int main()
    {
        int T;
        cin >> T;
        while(T --)
        {
            int a, b, c, k;
            scanf("%d%d%d%d", &a, &b, &c, &k);
            //判断是否是等差数列
            if(a + c == 2 * b) cout << (a + (ll)(k - 1) * (b - a)) % mod << endl;
            else
            {
                cout << (ll)a * qmi((b / a), k - 1) % mod << endl;
            }
        }
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    四.总结

    给出数列前三项a,b,c。

    1. 若为等差数列 当且仅当 a ∗ c = 2 ∗ b a * c = 2 * b ac=2b
    2. 若为等比数列 当且仅当 a ∗ c = b 2 a * c = b ^ 2 ac=b2
    3. 等差数列前n项和:
      S n = ( a 1 + a n ) n 2 S_n = \frac{(a_1 + a_n)n}{2} Sn=2(a1+an)n
      S n = n a 1 + n ( n − 1 ) 2 d S_n = na_1 + \frac{n(n-1)}{2}d Sn=na1+2n(n1)d
    4. 等比数列前n项和:
      S n = a 1 ( 1 − q n ) 1 − q ( q 不等于 1 ) S_n = \frac{a_1(1 - q^n)}{1 - q}(q 不等于 1) Sn=1qa1(1qn)(q不等于1)
  • 相关阅读:
    序列化(二)Parcelable
    你们眼睛干涩,胀痛吗?C# WPF 久坐提醒桌面小程序 - 内附 眼肌运动、远视力表高清图
    递归生成器(recursion/recurrence generator)个人理解
    JPA之使用复合主键
    leetcode 310周赛
    Git入门到精通(大全)
    mybatis二级缓存原理
    Kubernetes基础(二十八)-K8S调度之拓扑分布TopologySpreadConstraints
    Python相关知识点
    Python实现基于DMN开发的问答系统
  • 原文地址:https://blog.csdn.net/qq_53244181/article/details/126083175