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

【算法 | 数论 No.1】AcWing1246. 等差数列

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。

原题链接:点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣算法分析
  • 3️⃣代码编写

1️⃣题目描述

在这里插入图片描述
在这里插入图片描述

2️⃣算法分析

整个题目的思路是先求出数组元素之间的最大公约数然后计算最大等差子序列的长度

那什么时候这个最大等差子序列的长度是最大的呢?我们根据等差数列公式来看:an = a1 + (n - 1)d,即n = (an - a1) / d + 1an最小(但是取的是数组中的最大值)、a1最大(但是取的是数组中的最小值),同时d最大(即每个元素与第一个元素之间的差值的最大公约数)。

3️⃣代码编写

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>using namespace std;
const int N = 1e5 + 10;
int arr[N];int gcd(int a,int b)
{return b ? gcd(b,a % b) : a;
}int main()
{int n;cin >> n;for(int i = 0;i < n;i++) scanf("%d",&arr[i]);sort(arr,arr + n);int d = 0;for(int i = 1;i < n;i++) d = gcd(d,arr[i] - arr[0]);if(!d) printf("%d\n",n);else printf("%d\n",(arr[n - 1] - arr[0]) / d + 1);return 0;
}

最后就顺利通过啦!!!及时复习其中包含的一些小的算法哈,比如欧几里得算法~

http://www.lryc.cn/news/225003.html

相关文章:

  • 竞赛 目标检测-行人车辆检测流量计数
  • 秋招进入尾声了,还有哪些公司和岗位可以投递?
  • CSS 文字溢出省略号显示
  • POD创建与删除简单描述
  • AndroidStudio打包报错记录(commons-logging,keystore password was incorrect)
  • 如何构建企业数据资产?数据资产如何入资产负债表 ?
  • 代码随想录算法训练营Day 47 || 198.打家劫舍、213.打家劫舍II、337.打家劫舍 III
  • (论文阅读24/100)Visual Tracking with Fully Convolutional Networks
  • 第10章 文件和异常
  • 【云栖2023】张治国:MaxCompute架构升级及开放性解读
  • 【经验模态分解】4.信号由时域向频域的转换
  • STM32的M4内核在keil上面float访问就hard_fault原因
  • 【LeetCode】217. 存在重复元素
  • 【Redis缓存架构实战常见问题剖析】
  • mac M2 pytorch_geometric安装
  • 【C++】异常 智能指针
  • 切换数据库的临时表空间为temp1 / 切换数据库的undo表空间为 undotbs01
  • react: scss使用样式
  • JAVA深化篇_36—— Java网络编程中的常用类
  • python操作链接数据库和Mysql中的事务在python的处理
  • 【qemu逃逸】XCTF 华为高校挑战赛决赛-pipeline
  • muduo源码剖析之TcpClient客户端类
  • C语言——switch语句判断星期
  • 栈回溯之CmBacktrace
  • node插件MongoDB(二)——MongoDB的基本命令
  • 【Git】推送Github失败:remote: Permission to xxx/*.git denied to xxx
  • Flink -- 状态与容错
  • Linux C语言进阶-D15递归函数和函数指针
  • LeetCode算法心得——全排列(回溯型排列)
  • 读取W25Q64的设备ID时输出0xff