【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+差分)

[蓝桥杯 2019 省 B] 等差数列

题目描述

数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N 个整数。

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

输入格式

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

第二行包含 N N N 个整数 A 1 , A 2 , ⋯   , A N A_1,A_2,\cdots,A_N A1,A2,,AN。(注意 A 1 ∼ A N A_1 ∼ A_N A1AN 并不一定是按等差数列中的顺序给出 )。

输出格式

输出一个整数表示答案。

样例 #1

样例输入 #1

5
2 6 4 10 20

样例输出 #1

10

提示

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

对于所有评测用例, 2 ≤ N ≤ 1 0 5 2 \le N \le 10^5 2N105 0 ≤ A i ≤ 1 0 9 0 \le A_i \le 10^9 0Ai109

蓝桥杯 2019 年省赛 B 组 H 题。


思路

首先,定义一些常量和变量。N 是一个整数常量,用来表示数组的最大长度。INF 是一个无穷大的常量,用于初始化最小差值。n 是一个整数,表示输入的整数数量。a[N]diff[N] 是两个整数数组,分别用来存储输入的整数和相邻整数的差值。

接着,从标准输入读取整数数量 nn 个整数,存入数组 a。将数组 a 进行排序,这样可以将给定的整数按照自然顺序排列。然后,计算并存储数组 a 中相邻整数的差值,同时更新最小差值 dmin

最后,如果最小差值 dmin 不为零,则输出 (a[n] - a[1]) / dmin + 1,这是等差数列的项数公式,表示包含这 n 个整数的最短等差数列的项数。如果最小差值 dmin 为零,说明所有给定的整数都相同,那么输出 n,表示最短等差数列的项数就是给定的整数数量。

注意

需要进行特判,当公差为0时,所有数都相同,直接输出n,否则会引发除零异常。


AC代码

#include <algorithm>
#include <iostream>
#define mp make_pair
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;

const int N = 1e6 + 7;
const int INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;

int n;
int a[N];
int diff[N];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}

	int dmin = INF;
	sort(a + 1, a + n + 1);
	for (int i = 2; i <= n; i++) {
		diff[i] = a[i] - a[i - 1];
		dmin = min(dmin, diff[i]);
	}
	cout << (dmin ? ((a[n] - a[1]) / dmin + 1) : n) << "\n";
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/428171.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

探究大语言模型如何使用长上下文

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 论文链接&#xff1a;https://doi.org/10.1162/tacl_a_00638 论文标题&#xff1a;Lost in the Middle: How Language Models Use Long Contexts 论文发表期刊&#xff1a;Transactions of the Assoc…

【Apple Vision Pro应用】Cinephile——Cinema Mode for Local Video(苹果眼睛视频播放器)

Cinephile 为您提供了一个完全无干扰、无限制的无限空间&#xff0c;让您尽享视频的精彩。它创造了一种身临其境的环境&#xff0c;您可以在能够想象到的最大屏幕上&#xff0c;从任何角度或位置观看内容。 您可以根据个人喜好自由调整视频的大小和位置。添加视频中的环境光&am…

MoonBit 新增 += 运算符,引入 super trait 和 List 字面量机制

MoonBit更新 1. 添加了 系列语句 包括、-、*、/&#xff0c;支持运算符重载&#xff1a; fn init {let array [1,2,3,4]array[2] * 10println(array) // [1, 2, 30, 4] }fn init {let mut a 1a 20println(a) // 21 } struct Foo {data : Array[Int] } derive(Debug)fn o…

转载-七种Java常用序列化框架的选型与对比

七种Java常用序列化框架的选型与对比 本文章转自&#xff1a;乐字节 文章主要讲解&#xff1a;Java常用序列化框架 获取更多前端相关资料可以点击链接加入群聊【Java技术交流群】&#xff1a;正在跳转暗号&#xff1a;166 转载地址&#xff1a;七种Java常用序列化框架的选型…

Linux设备模型(九) - bus/device/device_driver/class

一&#xff0c;设备驱动模型 1&#xff0c;概述 在前面写的驱动中&#xff0c;我们发现编写驱动有个固定的模式只有往里面套代码就可以了&#xff0c;它们之间的大致流程可以总结如下&#xff1a; 实现入口函数xxx_init()和卸载函数xxx_exit() 申请设备号 register_chrdev_r…

软件测试的基本流程是什么?软件测试流程详细介绍

软件测试和软件开发一样&#xff0c;是一个比较复杂的工作过程&#xff0c;如果无章法可循&#xff0c;随意进行测试势必会造成测试工作的混乱。为了使测试工作标准化、规范化&#xff0c;并且快速、高效、高质量地完成测试工作&#xff0c;需要制订完整且具体的测试流程。 01…

中国各省绿色金融试点DID数据集(2010-2023)

一、数据简介 最新的2010-2023年中国31省绿色金融试点DID数据&#xff0c;供大家研究使用。 数据说明&#xff1a;内含绿色金融改革创新试验区名单&#xff0c;将试验区获批当年及以后的政策虚拟变量项是否试点赋值为1&#xff0c;获批之前赋值为0。其中赣江新区、贵安新区为国…

Spring:FactoryBean预加载逻辑以及自定义实现Mybatis的接口扫描

Spring&#xff1a;FactoryBean预加载逻辑以及自定义实现Mybatis的接口扫描 1 前言 参考Mybatis框架的Mapper注解扫描Mapper接口的业务逻辑&#xff0c;其中集成Spring的逻辑里使用到了Spring框架的FactoryBean拓展点&#xff0c;本文针对Spring FactoryBean的加载流程进行分…

Unity 摄像机的深度切换与摄像机画面投影

摄像机可选&#xff1a;透视、正交 正交类似投影&#xff0c;1比1 透视类似人眼&#xff0c;近大远小 摄像机投影 在项目中新建&#xff1a;渲染器纹理 将新建纹理拖动到相机的目标纹理中 新建一个平面&#xff0c;将新建材质组件放到平面中即可。 相机深度切换 使用代…

Git实战(2)

git work flow ------------------------------------------------------- ---------------------------------------------------------------- 场景问题及处理 问题1&#xff1a;最近提交了 a,b,c,d记录&#xff0c;想把b记录删掉其他提交记录保留&#xff1a; git reset …

JavaWeb之 Web概述

目录 前言1.1 Web和 JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器 1.3 JavaWeb 学习内容 前言 博主将用 CSDN 记录 Java 后端开发学习之路上的经验&#xff0c;并将自己整理的编程经验和知识分享出来&a…

浅谈MySQL的B树索引与索引优化

MySQL的MyISAM、InnoDB引擎默认均使用B树索引&#xff08;查询时都显示为“BTREE”&#xff09;&#xff0c;本文讨论两个问题&#xff1a; 为什么MySQL等主流数据库选择B树的索引结构&#xff1f;如何基于索引结构&#xff0c;理解常见的MySQL索引优化思路&#xff1f; 为什…

S7-1500 PLC装载存储器已使用容量变红的解决方法示例

S7-1500 PLC装载存储器已使用容量变红的解决方法示例 1.如何在线查看S7-1200/1500 PLC的内部存储区的使用情况? 答:在项目树中展开PLC程序打开“在线和诊断”,点击“转至在线”使TIA PORTAL在线连接到S7-1200 CPU,在“存储器”标签查看CPU内存使用情况,如下图所示: 2.如何…

LeetCode234题:回文链表(python3)

代码思路&#xff1a;将链表的值复制到数组列表中&#xff0c;再使用双指针法判断&#xff0c;不断更新current_node的值。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next…

探索Linux世界:初次接触和基本指令(文件操作)

文章目录 1.基本介绍和准备2.基本指令和Linux的基本操作3.几个重要基本指令3.1 ls - 列出文件和目录3.1.1文件的知识3.1.2 .和..文件 3.2pwd - 显示当前工作目录3.2.1路径知识 3.3 cd - 切换目录3.4 touch - 创建文件或更新时间戳3.5mkdir - 创建新目录3.6rm - 删除文件或目录3…

基本运算符

参考C Primer Plus进行C语言学习 文章目录 基本运算符 除法运算符&#xff1a;/其他运算 1、除法运算符 在C语言中&#xff0c;整数除法结果的小数部分被丢弃&#xff0c;这一过程被称为截断。 2.其他运算符 &#xff08;1&#xff09;sizeof运算符和size_t类型 回顾一下&…

C++ 前缀和

目录 例1 例2 例3 例4 例5 例6 例7 例8 例1 DP34 【模板】前缀和 分析&#xff1a;dp和arr的大小并不是固定的&#xff0c;就是有没有偏移量&#xff0c;这里的n是从1开始&#xff0c;不如直接放到下标1处&#xff0c;在最后的减法时&#xff0c;如果用第一个参考代码会…

单调栈的理解

单调栈的理解 核心代码场景思考 完整代码环形数组循环数组 单调栈&#xff1a; 单调递增或 单调递减的栈 核心代码 while (!s.empty()&&s.peek()<nums[i]){s.pop(); } s.push(nums[i]);将要放入的元素&#xff0c;与栈内元素依个比较&#xff0c;小于的都出栈&am…

设计模式(含7大原则)面试题

目录 主要参考文章 设计模式的目的 设计模式的七大原则 设计模式的三大分类及关键点 1、创建型模式&#xff08;用于解耦对象的实例化过程&#xff09; 2、结构型模式 3、行为型模式 23种设计模式&#xff08;乱序--现学现写&#xff0c;不全面--应付面试为主&#xff…

BUUCTF------[HCTF 2018]WarmUp

开局一个表情&#xff0c;源代码发现source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];if (! isset($page) |…