日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

蓝桥杯等差数列

發(fā)布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯等差数列 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

數(shù)學(xué)老師給小明出了一道等差數(shù)列求和的題目。

但是粗心的小明忘記了一部分的數(shù)列,只記得其中 N 個整數(shù)。

現(xiàn)在給出這 N 個整數(shù),小明想知道包含這 N 個整數(shù)的最短的等差數(shù)列有幾項?

輸入格式
輸入的第一行包含一個整數(shù) N。

第二行包含 N 個整數(shù) A1,A2,???,AN。(注意 A1~AN 并不一定是按等差數(shù)
列中的順序給出)

輸出格式
輸出一個整數(shù)表示答案。

數(shù)據(jù)范圍
2≤N≤100000,
0≤Ai≤109
輸入樣例:
5
2 6 4 10 20
輸出樣例:
10
樣例解釋
包含 2、6、4、10、20 的最短的等差數(shù)列是 2、4、6、8、10、12、14、16、18、20。
##代碼

#include <iostream> #include <algorithm> using namespace std; long long num[100005]; int jg[100005];int gcb(int x,int y){ //輾轉(zhuǎn)相除求最大公約數(shù)if(y==0) return x;if(x>y)return gcb(y,x%y);return gcb(x,y%x); }int main(){int n;cin >> n;for(int i=0;i<n;i++){scanf("%d",&num[i]);}sort(num,num+n); //輸入的數(shù)不是有序的for(int i=1;i<n;i++){jg[i]=num[i]-num[i-1];if(jg[i]==0){ //如果發(fā)現(xiàn)公差為0,直接可以得出有n項,并結(jié)束程序printf("%d\n",n);return 0;}}//對每個數(shù)的間隔進行排序sort(jg+1,jg+n);int am=gcb(jg[1],jg[2]);for(int i=3;i<n;i++){//求出每個間隔的最大公約數(shù),就是公差am=gcb(am,jg[i]);}printf("%d\n",(num[n-1]-num[0])/am+1);//an=an+(n-1)*dreturn 0; }

總結(jié)

以上是生活随笔為你收集整理的蓝桥杯等差数列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。