试题 H: 等差数列
To Be Continue …
一、问题描述
数学老师给小明出了一道等差数列求和
的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N个整数。现在给出这 N N N个整数,小明想知道包含这 N N N个整数的最短
的等差数列有几项
?
输入格式
输入的第一行包含一个整数 N N N。第二行包含 N N N个整数 A 1 A_{1} A1, A 2 A_{2} A2,··· , A N A_{N} AN。(注意 A 1 ∼ A N A_{1} ∼ A_{N} 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 2\leq N\leq100000 2≤N≤100000, 0 ≤ A i ≤ 1 0 9 0\leq A_{i}\leq10^{9} 0≤Ai≤109。
四、原理分析
试题要求正项数列
,可以先将其按升序的顺序排列好,不妨设排列好的数列记作
a i 1 , a i 2 , ⋯ , a i n a_{i1},a_{i2},\cdots,a_{in} ai1,ai2,⋯,ain
设 d \mathrm{d} d为其真实的等差数列的
公差
,
设输入的数列(已排序)的任意相邻两项
为 a i m a_{im} aim和 a i n a_{in} ain,其中 m > n m>n m>n,不妨记 a i m − a i n = d k l a_{im}-a_{in}=d_{kl} aim−ain=dkl,则 d k l ∣ d d_{kl}\ | \ \mathrm{d} dkl ∣ d,
等差数列的公式
为
N u m b e r = a