0
点赞
收藏
分享

微信扫一扫

java组[蓝桥杯2019初赛]等差数列数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。 现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差


题目描述

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中N 个整数。
现在给出这N 个整数,小明想知道包含这N 个整数的最短的等差数列有几项?

输入
输入的第一行包含一个整数N。
第二行包含N 个整数A1.A2,..., AN。(注意A1<=AN 并不一定是按等差数列中的顺序给出)
2<=N<=100000,0<=Ai<=10^9

输出
输出一个整数表示答案。

样例输入 Copy
5
2 6 4 10 20

样例输出 Copy
10

很简单的题目:

 思路:     1 获取输入的数据,存入数组

             2 然后获取两个数之间的最小的的差值( 这个就是我们的 公差 d  )

            3  最端需要的长度     ( 最大值-最小值)/公差 +1

 

 

 

import java.util.Arrays;
import java.util.Scanner;



public class Main {

public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int [] arr=new int[n];
//处理输入
for(int i=0;i<arr.length;i++) {
arr[i]=scanner.nextInt();
}
long min=Integer.MAX_VALUE;
//一定要排序 不然有负数作为 差
Arrays.sort(arr);
for(int i=0;i<arr.length-1;i++) {
//记录最小的公差
if((arr[i+1]-arr[i])<min){
min=arr[i+1]-arr[i];
}

}

//获取序列长度
long ans=(arr[arr.length-1]-arr[0])/min+1;
System.out.println(ans);
}
}

 

举报

相关推荐

0 条评论