等差数列
为了记录自己变得更强。
题目:等差数列(来源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;
}