数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。
现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有 几项?
输入的第一行包含一个整数 N。 第二行包含N个整数A1,A2,···,AN。(注意A1 ∼AN并不一定是按等差数
列中的顺序给出)
(对于所有评测用例,2≤ N ≤100000,0≤ Ai ≤109。)
输出一个整数表示答案
5 2 6 4 10 20
10
- #include
- #include
- #include
- using namespace std;
- int gcd(int a, int b) {//辗转相除法求最大公因数
- if (b == 0)
- return a;
- else
- return gcd(b, a%b);
- }
- int main()
- {
- int n;
- cin >> n;
- vector<int> nums(n, 0);
- for (int i = 0; i < n; ++i) cin >> nums[i];
- sort(nums.begin(), nums.end());
- int min=nums[0],max=nums[n-1];
- int d=nums[1]-nums[0];//求公差
- for(int i=2;i
- if(nums[i]-nums[i-1]<=d)//求出最小的公差
- d=gcd(d,nums[i]-nums[i-1]);//更新公差
- }
- if(d==0)//特殊情况
- cout<
- else
- cout<<(max-min)/d+1;
- return 0;
- }
-
相关阅读:
RabbitMQ系列【14】备份交换机
解密网络通信的关键技术(下):DNS、ARP、DHCP和NAT,你了解多少?
springboot + vue 整合 阿里云 视频点播 功能
C++ Primer学习笔记-----第三章:字符串、向量、数组
How to install mysql 8.0 based on podman
侯捷 C++ STL标准库和泛型编程 —— 9 STL周围
充分理解判别模型和生成模型、概率模型和非概率模型
第12章 初识SqlSugarCore之监视Redis性能
Diffie-Hellman的C++语言描述简单实现
Bert基础(四)--解码器(上)
-
原文地址:https://blog.csdn.net/qq_46688735/article/details/136287511