当前位置: 代码迷 >> 综合 >> PTA-等差数列
  详细解决方案

PTA-等差数列

热度:49   发布时间:2024-01-10 04:31:08.0

等差数列

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