[編程題] 等差數列 網易2018
阿新 • • 發佈:2017-09-24
裏的 nbsp 所有 負數 例子 spa 否則 cnblogs using
如果一個數列S滿足對於所有的合法的i,都有S[i + 1] = S[i] + d, 這裏的d也可以是負數和零,我們就稱數列S為等差數列。
小易現在有一個長度為n的數列x,小易想把x變為一個等差數列。小易允許在數列上做交換任意兩個位置的數值的操作,並且交換操作允許交換多次。但是有些數列通過交換還是不能變成等差數列,小易需要判別一個數列是否能通過交換操作變成等差數列
輸入描述:
輸入包括兩行,第一行包含整數n(2 ≤ n ≤ 50),即數列的長度。 第二行n個元素x[i](0 ≤ x[i] ≤ 1000),即數列中的每個整數。
輸出描述:
如果可以變成等差數列輸出"Possible",否則輸出"Impossible"。
輸入例子1:
3 3 1 2
輸出例子1:
Possible
解題思路:先排序後判斷
#include<iostream> #include<algorithm> using namespace std; int main() { int n; int a[1000]; cin>>n; int m; for(int i=0;i<n;i++) { cin>>a[i]; } sort(a,a+n); for(m=1;m<n-1;m++) {if(a[m]*2!=a[m-1]+a[m+1]) { cout<<"Impossible"; break; } } if(m==n-1) cout<<"Possible"; }
[編程題] 等差數列 網易2018