解题思路:
注意事项:
参考代码:
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 人评分