请写一个程序,判断给定整数序列能否构成等差数列。
输入说明:多组数据,每组输入数据由两行构成,第一行只有一个整数n(<1000),表示序列长度(即序列中整数的个数,0表示输入结束),第二行为n个整数,每个整数的取值区间都为[-32768----32767],整数之间以空格或挑格间隔。
输出说明:对于每一组数据,输出一个yes或no,表示该序列能否构成等差数列。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
void main(){
vector<string>s;
int n,a[1000],i,j,t;
cin>>n;
while(n){
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
t=a[1]-a[0];
for(i=2;i<n;i++)
if(a[i]-a[0]!=i*t){ //核心思想
s.push_back("no");
break;
}
if(i==n-1)s.push_back("yes");
cin>>n;
}
for(i=0;i<s.size();i++)
cout<<s[i]<<endl;
}