测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A40975. 神奇的fans

填空题 较易

题目描述

神奇的fans

题目描述

传说fans是一个数学天才。在他五岁那年,从一堆数字卡片中选出了4张 卡片:5,7,6,8。这4个数字有什么神秘之处呢?如果把这4张卡片自左往右的排成:5,6,7,8。你就会发现:原来这4个数字构成了等差数列!当年 fans选出了n组卡片,据说都能够构成等差数列。但是事实真的是这样吗?fans真的有这么神奇吗? n组数据就是fans选出的n组卡片,请你判断每一组卡片是否能构成等差数列.

输入格式

第一个数为数据的组数n,表示后面有n行,每行中的第一个数为该组数据的元素个数m(1≤m≤100),其后是m个正整数(不会超出int的表示范围)。

输出格式

如果能够构成等差数列,输出“yes”,否则输出“no”。

样例输入

2

4 5 7 6 8

8 1 7 3 2 8 12 78 3

样例输出

yes

no

参考答案

#include<stdio.h> #include<stdlib.h> int main(){ int cmp(const void *,const void *); int i,n,m,t,f,a[100]; scanf("%d",&n); while(n--){ f=1;//假设构成等差数列 scanf("%d",&m); for(i=0;i<m;i++) scanf("%d",a+i); qsort(a,m,sizeof(int),cmp);//快速排序 if(m>2){ t=a[1]-a[0];//公差 for(i=2;i<m;i++){ if(a[i]-a[i-1]!=t){//相邻两数的差不等于公差 f=0;//不是等差数列 break; } } } if(f) printf("yes\n"); else printf("no\n"); } return 0; } int cmp(const void *a,const void *b){ return *(int *)a-*(int *)b; }
上一题 下一题