钟xxx


私信TA

用户名:dotcpp0661013

访问量:1553

签 名:

等  级
排  名 1477
经  验 2749
参赛次数 0
文章发表 23
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

注意事项:

参考代码:

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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区