原题链接:蓝桥杯2019年第十届省赛真题-等差数列
解题思路:
注意事项:
参考代码:
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 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复