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