等差数列
为了记录自己变得更强。
题目:等差数列(来源XDOJ)
问题描述
请写一个程序,判断给定整数序列能否构成一个等差数列。
输入说明
输入数据由两行构成,第一行只有一个整数n(n<100),表示序列长度(该序列中整数的个数);
第二行为n个整数,每个整数的取值区间都为[-32768~32767],整数之间以空格间隔。
输出说明
对输入数据进行判断,不能构成等差数列输出“no”,能构成等差数列输出表示数列公差(相邻两项的差)的绝对值的一个整数。
输入样例 :
样例1输入
6
23 15 4 18 35 11
样例2输入
5
2 6 8 4 10
输出样例
样例1输出
no
样例2输出
2
#include<stdio.h>
#include<math.h>
int main(){
int n,i,j,c,a[100];
for(i=0;i<100;i++){//初始化数组 √
a[i]=0;
}
scanf("%d",&n);
for(i=0;i<n;i++){//存入数组 √
scanf("%d",&a[i]);
}
for(i=0;i<n;i++){//冒泡排个序 √
for(j=0;j<n-i-1;j++){
if(a[j]>a[j+1]){
c=a[j];
a[j]=a[j+1];
a[j+1]=c;
}
}
}
for(;n>=3;n--){//判断可否为等差 √
if(a[n-1]-a[n-2]!=a[n-2]-a[n-3]){
printf("no");
return 0;
}
}
printf("%d",a[1]-a[0]);
return 0;
}
鹅,无聊的现在又用c++语法写了一下
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,a[100];
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
sort(a,a+n);
for(;n>=3;n--){//判断可否为等差 √
if(a[n-1]-a[n-2]!=a[n-2]-a[n-3]){
cout<<"no";
return 0;
}
}
cout<<a[1]-a[0];
return 0;
}