是公差为正数的等差数列,若a1 a2 a3=15,a1a2a3=80,求a11 a12 a13的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是公差为正数的等差数列,若a1 a2 a3=15,a1a2a3=80,求a11 a12 a13的值相关的知识,希望对你有一定的参考价值。

简单分析一下,答案如图所示

参考技术A 解:
设公差为d,则d>0
a1+a2+a3=3a2=15
a2=5
a1a2a3=80
(a2-d)a2(a2+d)=80
a2=5代入,整理,得
d²=9
d>0,d=3
a11+a12+a13
=3a12
=3(a2+10d)
=3×(5+10×3)
=105本回答被提问者采纳

和为S的连续正数序列

题目描述:找出所有和为S的连续正数序列

思路分析:(一)求出连续序列的中间值和长度

  因为是连续正数序列,所以实质上是一个公差为1的等差数列,可以利用等差数列的和来计算。

 假设长度为n

(1)先算出中间值S/n,但要分以下两种情况:

   当n为奇数时,序列的中间值正好是序列的平均值;

   当n为偶数时,序列的中间两个数的平均值是序列的平均值。

(2)并且不用n不用从2计算到S,由等差数列的和为S=n*(n+1)/2  可以得到n和S的范围,具体如下图:

                                 技术分享图片

    代码实现如下:

     

import java.util.ArrayList;
public class Solution {
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
       ArrayList<ArrayList<Integer>>  array = new ArrayList<> ();
        for(int n= (int)Math.sqrt(2*sum);n>=2;n--)
        {
            if((n&1)==1&&sum%n==0||(sum%n)*2==n)
            {
                ArrayList<Integer> list = new ArrayList<Integer>();
                for(int i = 0,k=(sum/n)-(n-1)/2;i<n;i++,k++)
                {
                    list.add(k);
                }
                  array.add(list);
            }
          
        }
        return array;
    }
}

    (二)利用滑动窗口设置双指针的形式来调整,并且用到了等差数列求和的第二个公式S=(a1+an)*n/2;

        分别设置两个变量plow,phigh来表示滑动窗口的两端,如果当前窗口中数的和比sum的小,则需要右边窗口左移,也就是phigh++,如果比sum大,则需要左边窗口右移,也就是plow++;

   代码如下:

import java.util.ArrayList;
public class Solution {
    public ArrayList<ArrayList<Integer> > FindContinuousSequence(int sum) {
        ArrayList<ArrayList<Integer>>  array = new ArrayList<> ();
        int plow=1,phigh=2;
        while(plow<phigh)
        {
            int cur = (plow+phigh)*(phigh-plow+1)/2;
            if(cur==sum)
            {
                ArrayList<Integer> list = new ArrayList<Integer>();
                for(int i=plow;i<=phigh;i++)
                {
                    list.add(i);
                }
                array.add(list);
                plow++;
            }else if(cur>sum)
            {
                plow++;
            }else 
            {
                phigh++;
            }
        }
        return array;
    }
}

反思:以上这个滑动窗口的方法很巧妙,可以对其进行扩展,如果不是连续的数列但也是等差数列,也可以利用这个方法,关键就是指针的移动。而且要注意的是列表里存储的还是一个列表项。

以上是关于是公差为正数的等差数列,若a1 a2 a3=15,a1a2a3=80,求a11 a12 a13的值的主要内容,如果未能解决你的问题,请参考以下文章

2017-5-17-Train:喵哈哈村的魔法考试 Round #18 (Div.2)

等差数列的平均数的公式是啥

单链表就地逆置的两种方法(递归与普通循环)

[HNOI2009]有趣的数列

和为S的连续正数序列

等比数列求和