解题思路:

注意事项:

参考代码:

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

/**
 * 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。
 * 现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr= new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
        }
        Arrays.sort(arr); // 排序
        // 求各差的最大公约数即可
        int[] diff = new int[n - 1];
        for (int i = 0; i < n - 1; i++) {
            diff[i] = arr[i + 1] - arr[i];
        }
        if (arr[0] == arr[n - 1]){
            System.out.println(n);
            return;
        }
        int temp = 0;
        for (int i = 0; i < n - 2; i++) {
            temp = gcd(diff[i], diff[i + 1]);
            diff[i + 1] = temp;
        }
        System.out.println((arr[n-1] - arr[0]) / temp + 1);

    }
    public static int gcd(int a, int b){
        return b == 0 ? a : gcd(b, a % b);
    }
}


 

0.0分

0 人评分

  评论区

  • «
  • »