第十届蓝桥杯省赛 C++ B/C组 - 等差数列

news2024/9/24 17:14:13

✍个人博客:https://blog.csdn.net/Newin2020?spm=1011.2415.3001.5343
📚专栏地址:蓝桥杯题解集合
📝原题地址:等差数列
📣专栏定位:为想参加蓝桥杯的小伙伴整理常考算法题解,祝大家都能取得理想成绩!
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

问题描述

数学老师给小明出了一道等差数列求和的题目。

但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。

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

输入格式

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

第二行包含 N 个整数 A1,A2,⋅⋅⋅,AN。(注意 A1∼AN 并不一定是按等差数
列中的顺序给出)

输出格式

输出一个整数表示答案。

数据范围

2≤N≤100000,
0≤Ai≤109

输入样例:

5
2 6 4 10 20

输出样例:

10

样例解释

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

思路

由于给定的数在同一个等差数列中,所以一定有公式 ( a 末 − a 首 ) / d + 1 (a_末-a_首)/d + 1 (aa)/d+1,其中 a 末 a_末 a a 首 a_首 a 分别为给定数列的最大值和最小值,d 为数列的公差。

如果想要使结果尽可能的小,则 d 要尽可能的大,所以 d 取其他数与最小数的差值的最大公约数。举个例子,这个序列可能是 a 0 + a 1 + a 2 + a 3 + a 4 = a 0 + ( a 0 + d ) + ( a 0 + 3 d ) + ( a 0 + 5 d ) + ( a 0 + 7 d ) a_0+a_1+a_2+a_3+a_4=a_0+(a_0+d)+(a_0+3d)+(a_0+5d)+(a_0+7d) a0+a1+a2+a3+a4=a0+(a0+d)+(a0+3d)+(a0+5d)+(a0+7d),则 d 就要取 0、d、3d、5d、7d 的最大公约数使公式值最小即项数最少。
在这里插入图片描述

代码

#include<bits/stdc++.h>
using namespace std;

const int N = 100010;
int a[N];
int n;

int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n; i++)    scanf("%d", &a[i]);
    sort(a, a + n);	//一定要排序

    //计算最大公约数
    int d = 0;
    for (int i = 1; i < n; i++)    d = gcd(d, a[i] - a[0]);

    //输出最小项数
    if (!d)  printf("%d\n", n);
    else    printf("%d\n", (a[n - 1] - a[0]) / d + 1);

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STL分析(九 适配器)

容器适配器&#xff1a;stack&#xff0c;queue stack和queue内含一个deque 函数适配器 binder2nd绑定第二参数 调用的过程中&#xff0c;算法count_if函数读取了迭代器头尾指针后&#xff0c;读取第三个参数为functor object即仿函数。因此在其参数为bind2nd(less< int&g…

LeetCode220123_140、117. 填充每个节点的下一个右侧节点指针 II

给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针&#xff0c;让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点&#xff0c;则将 next 指针设置为 NULL。初始状态下&#xff0c;所有 next 指针都被设置为 NULL。进阶…

双指针思想,c语言

问题导入 对一个给定的自然数M&#xff0c;求出所有的连续的自然数段&#xff0c;这些连续的自然数段中的全部数之和为M。 例如&#xff1a;1998 1999 2000 2001 2002 10000&#xff0c;所以从1998到2002的一个自然数段为M 10000的一个解。 输入格式 第一行&#xff0…

JQuery总结(三)

jQuery 事件 on可以同时绑定多个事件&#xff0c;并且动态添加的元素也会自动添加事件 自动触发事件&#xff1a; 案例1&#xff1a; <style>div{width: 100px;height: 200px;background-color: violet;transition: all .5s;}.current{width: 200px;height: 100px;ba…

ARP渗透与攻防(三)之流量分析

ARP攻击-流量分析 ARP渗透与攻防(一)之ARP原理 ARP渗透与攻防(二)之断网攻击 系列文章 1.环境准备 1.kali作为攻击机 2.win10作为靶机 IP地址&#xff1a;192.168.110.11 3.网关 IP地址&#xff1a;192.168.110.1 2.kali数据包转发 出于安全考虑&#xff0c;Linux系统默…

使用Py6S计算瑞利反射率教程

1、前言那么&#xff0c;首先&#xff0c;什么是瑞利反射率&#xff1f; 好吧&#xff0c;这是由大气中的瑞利散射引起的反射率&#xff08;在大气层顶部测量&#xff09;。 这是大气中气体分子对光的波长依赖性散射——这是光穿过大气时不可避免的结果。所以&#xff0c;关于如…

【2022年度总结与2023展望】---22年故事不长,且听我来讲

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f4e3;系列专栏&#xff1a;故事 文章目录前言一、高考前及高考后的暑假二、大一上的生活2.1 感受校园美景2.2 进入ACM实验室2.3 比赛和比赛经历三、那些帮助过我的人…

AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x

今天我们尝试一下在AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x。 GraalVM Enterprise 22是包含新功能的最新版本&#xff0c;但不是Long-Term-Support (LTS) 版本。 注意&#xff1a;下载Oracle GraalVM Enterprise Edition需要有Oracle账户&#xff0c;如果没…

六、pyhon操作mysql篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 下载pymysql 2. 新建数据库 3. mysql服务器版本查询 4. 执行非查询性质的SQL 5. 执行查询性质的sql ​​​​​​​6. 执行新增sql 1. 下载pymysql 右下角点击版本 选择解释器设…

基于Markdown文件的个人wiki

节后第一更&#xff0c;老苏祝您兔年大吉&#xff0c;幸福安康&#xff0c;事事顺心&#xff01; 什么是 wikmd &#xff1f; wikmd 是一个基于文件的 wiki&#xff0c;旨在简化。这些文档完全用 Markdown 编写&#xff0c;使用 pandoc 将 Markdown 文件转换为 html5。 &#…

WPF__Viewport3D 学习记录

1、相机的摆放位置和姿态 Position 是指定照相机的位置&#xff0c;注意Z轴的坐标&#xff0c;如果Z轴值大于模型的Z轴值&#xff0c;那么镜头就在物体前面&#xff0c;反之在物体后面。因此&#xff0c;你可以设置 LookDirection 来调整相机的方向&#xff0c;Position是相机的…

NodeJS 之模块化

NodeJS 之模块化参考描述模块化优点分类加载模块作用域优点自定义模块modulemodule.exportsexports 与 module.exports示例示例一示例二示例三建议CommonJS规范CommonJS参考 项目参考搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述操作系统Windows 10 专业版NodeJS18.13.0 模…

MU-MIMO是什么

欢迎来到东用知识小课堂&#xff01;1.什么是MIMOMIMO&#xff1a;Multiple-Intput Multiple-Output,即多入多出系统&#xff0c;这里的入和出是相对于发射天线和接受天线构成的天线系统来讲。通常的通信系统是单发单收&#xff0c;也就是SISO&#xff1a;Single-Input Single-…

【Bp2Lua】蓝图定义 Struct 和 Enum

【Bp2Lua】蓝图定义 Struct 和 Enum 背景 Enum Struct 结论 enum 可以保持不动&#xff0c;使用枚举值注释&#xff1b;如果C特别需要访问 enum&#xff0c;可以 C 化struct 必须 C 化 坑 首先&#xff0c;从字段访问都有字段名的坑&#xff0c;名字可以有空格&#xff0c…

maven-3-java调用python程序

【Java】使用Java调用Python的四种方法 fastjson的使用——JSON字符串、JSON对象、Java对象的互转 使用idea给Java程序打jar包&#xff08;超简单 超详细&#xff09; 1 环境准备 (1)新建Maven类型的项目&#xff0c;D:\processPython。 右键src/main/java&#xff0c;创建ja…

基于深度学习的文本分类6大算法-原理、结构、论文、源码打包分享

导读&#xff1a;文本分类是NLP领域一项基础工作&#xff0c;在工业界拥有大量且丰富的应用场景。传统的文本分类需要依赖很多词法、句法相关的human-extracted feature&#xff0c;自2012年深度学习技术快速发展之后&#xff0c;尤其是循环神经网络RNN、卷积神经网络CNN在NLP领…

【Leetcode面试常见题目题解】8. 合并两个有序链表

前言 本文是LC第21题&#xff1a;合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 提示&#xff1a; 两个链表的节点数目范围是 [0, 50] -100 < Node.val < 100 l1 和 l2 均按 非递减顺…

产品设计-基础控件-信息反馈控件

产品设计-基础控件-信息反馈控件1.1 吐司提示1.2 对话框1.3 气泡卡片1.4 动作面板和弹出层1.4.1 动作面板1.4.2 弹出层1.5 进度条和加载状态1.5.1进度条1.5.2 加载状态1.1 吐司提示 用户输入信息后&#xff0c;一个好的产品设计会给予用户明确的信息反馈&#xff0c;例如&…

五、pyhon-地图可视化篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 基础地图 2. 设置分段 1. 基础地图 from pyecharts.charts import Map # 准备地图对象 map Map() # 准备数据 data[ ("北京",99), ("上海",199), ("…

【2023.01.23】定时执行专家 V6.6 兔年春节版 - 更新日志

目录 ◆ 最新版下载链接 ◆ 软件更新日志 – TimingExecutor Full Change Log ▼ 2023-01-23 V6.6 ▼ 2023-01-20 V6.5 ▼ 2022-12-25 V6.4 ▼ 2022-11-15 V6.3 ▼ 2022-10-01 V6.2 ▼ 2022-07-30 V6.1&#xff08;Build 769.30072022&#xff09; ▼ 2022-0…