当前位置: 首页 > news >正文

第十届省赛——9等差数列(集合做法)

题目:

试题 I: 等差数列

时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分

【问题描述】

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一

部分的数列,只记得其中 N 个整数。

现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有

几项?

【输入格式】

输入的第一行包含一个整数 N。

第二行包含 N 个整数 A1, A2, · · · , AN。(注意 A1 ∼ AN 并不一定是按等差数

列中的顺序给出)

【输出格式】

输出一个整数表示答案。

【样例输入】

5

2 6 4 10 20

【样例输出】

10

【样例说明】

包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、

18、20。

【评测用例规模与约定】

对于所有评测用例,2 ≤ N ≤ 100000,0 ≤ Ai ≤ 109。

分析:

先用集合储存这串数字,然后自然排序从小到大。首先我们先找到公差,公差最大为这个数列的第二项减第一项,先从最大的可能性公差进行判断,如果不对就减一,在进行公差的判断。

公差的判断方法是,从第二项开始减去前一项,只要能被d整除,一直能够除到最后还是能被整除,那么就这是公差

找到公差之后我们让最大一项减去第一项除以公差加一,就是最短等差数列的长度。

如下图是测试的多种可能性

步骤:

package 历届真题省赛阶段;import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;public class 测试1 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();ArrayList<Integer> arrayList = new ArrayList<>();for (int i = 0; i < n; i++) {arrayList.add(sc.nextInt());}Collections.sort(arrayList);int d = arrayList.get(1)-arrayList.get(0);for (int i = 0;; i++) {Boolean pan = f(d - i, arrayList, n);// 求是不是公差if (pan) {d = d - i;break;}}System.out.println((arrayList.get(n-1)-arrayList.get(0)) / d + 1);sc.close();}private static Boolean f(int d, ArrayList<Integer> arrayList, int n) {for (int i = 1; i < n; i++) {int cha = arrayList.get(i)-arrayList.get(i-1);if (cha % d == 0) {continue;} else {return false;}}return true;}}
http://www.lryc.cn/news/38723.html

相关文章:

  • 《数据分析-JiMuReport03》JiMuReport报表设计入门介绍-新建报表
  • 从功能测试进阶自动化测试,爆肝7天整理出这一份超全学习指南【附网盘资源】
  • CNN神经网络——手写体识别
  • python调试模块ipdb
  • 【数据库】聊聊MySQL的日志,binlog、undo log、redo log
  • aws dynamodb java低等级api和高级客户端api的使用
  • Kafka中那些巧妙的设计
  • 《JavaEE》进程和线程的区别和联系
  • Matlab生成sinc信号
  • 进程与线程区别与联系
  • 使用vbscript.regexp实现VBA代码格式化
  • 选择结构习题:百分值转换成其相应的等级
  • c# 源生成器
  • [N1CTF 2018]eating_cms1
  • 数据结构与算法基础(王卓)(15):KMP算法详解(含速成套路和详细思路剖析)
  • 【互联网架构】聊一聊所谓的“跨语言、跨平台“
  • 1.JVM常识之 类加载器
  • 一天搞定《AI工程师的PySide2 PyQt5实战开发手册》
  • 身份推理桌游
  • [LeetCode周赛复盘] 第 99 场双周赛20230304
  • Parcel Bundle漏洞学习
  • RTP载荷H264(实战细节)
  • 软考高级信息系统项目管理师系列之四十三:信息系统安全管理
  • 并发编程之AtomicUnsafe
  • GDB调试快速入门
  • Vim一次复制,多次粘贴
  • 如何修改Win11上的默认程序?
  • 安装Linux虚拟机和Hadoop平台教程汇总及踩坑总结
  • Shell脚本的使用和介绍
  • 机械学习 - 基础概念 - scikit-learn - 数据预处理 - 1