2019年省賽第十屆藍橋杯B組C/C++試題H解 等差數列
試題 H: 等差數列
時間限制: 1.0s 記憶體限制: 256.0MB 本題總分:20 分
【問題描述】
數學老師給小明出了一道等差數列求和的題目。但是粗心的小明忘記了一
部分的數列,只記得其中 N 個整數。
現在給出這 N 個整數,小明想知道包含這 N 個整數的最短的等差數列有
幾項?
【輸入格式】
輸入的第一行包含一個整數 N。
第二行包含 N 個整數 A1, A2, · · · , AN。(注意 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, 0 ≤ Ai ≤ 109。
思路:
等差數列求第n項:a(n)=a(1)+d*(n-1)。
如果不知道可以求出公差,再迴圈累加計數也可以得到答案。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,d,ans,a[100005];
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n);
d=a[1]-a[0];
for(int i=1;i<n-1;i++){ //排除前兩項差不是公差的情況
if(a[i+1]-a[i]<d){
d=a[i+1]-a[i];
}
}
if(d==0){
ans=n;
}else{
ans=(a[n-1]-a[0])/d+1; //等差數列求第n項:a(n)=a(1)+d*(n-1)
}
cout<<ans<<endl;
return 0;
}
相關文章
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 試題B:小球反彈(第十五屆藍橋杯省賽B組c/c++組)C++
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 第十屆藍橋杯C++國賽B組部分題解(假題解)C++
- 第十五屆藍橋杯C++B組省賽總結C++
- 第十三屆藍橋杯省賽A組
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 2015年省賽第六屆藍橋杯B組C/C++第五題解 九陣列分數C++陣列
- 2017第八屆藍橋杯C/C++ B組省賽第二題 秒解C++
- 2016年省賽第七屆藍橋杯B組C/C++第九題解 交換瓶子C++
- 第十屆藍橋杯C語言大學B組C/C++ 試題F:特別的數C語言C++
- 第六屆藍橋杯省賽CC++B組C++
- 2015年藍橋杯六屆省賽大學B組真題
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科B組)Java
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 2018第九屆藍橋杯省賽C++B組【第四題:測試次數】C++
- 2013年第四屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 2024年第十五屆藍橋杯軟體類國賽 C/C++ B組 個人解法C++
- 2014年第五屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 2020藍橋杯省賽B組C++(第二場)真題C++
- 2017省賽藍橋杯B組
- 2016年藍橋杯C/C++組省賽第一題--煤球數目C++
- 第14屆藍橋杯B組國賽
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 【藍橋杯考前突擊】第十一屆藍橋杯校賽模擬C/C++ 正整數序列C++
- 2017年藍橋杯javaB組——等差素數列Java
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科A組)Java
- 2018藍橋杯省賽B組
- 2012年第三屆藍橋杯C/C++程式設計本科B組省賽 大數乘法(程式碼填空)C++程式設計
- 第九屆藍橋杯軟體類省賽 Java B組 題目及解析Java
- 2016年藍橋杯C/C++組省賽第三題--湊算式C++