Python入门习题(72)——OpenJudge百练习题:判断是否可以构成等差数列
程序员文章站
2022-04-01 17:46:47
...
题目描述
来源
OpenJudge网站 – 百练习题集-第4068号习题
要求
总时间限制: 1000ms 内存限制: 65536kB
描述
有一组未排序整数,判断这组数字是否可以构成等差数列。如4 8 6这几个数字可以构成一个4 6 8的等差数列。
输入
第一行是一个正整数N(1<=N<=100),表示下面需要检测的数组的个数。其后有N行,每行有若干个数字,米格数字间由空格隔开。
输出
有N行,每行对应输入的一个数组,如果该数组可以构成等差数列,则该行输出True,否则输出False。
样例输入
2
4 8 6
3 3 2
样例输出
True
False
解题思路
- 这一题的一个坑是,如果一行数字只有两个,视为构成等差数列。
- 判别一行整数是否构成等差数列的做法是:对该行整数排序,然后看相邻两个数的差是否相等。
参考答案
N = int(input())
for i in range(N):
ds = [int(s) for s in input().strip().split()]
if len(ds) <= 2:
print("True") #有点不合常理
continue
ds.sort()
deltas = [ds[i] - ds[i-1] for i in range(1, len(ds))] #相邻两个数的差组成列表
for j in range(1, len(deltas)):
if deltas[j] != deltas[0]:
print("False") #有不相等的
break
else:
print("True") #全部相等
测试用例
-
题目描述给出的测试用例包含了是等差数列和不是等差数列的情形。
-
一行数字只有两个,视为构成等差数列。
样例输入
1
4 8
样例输出
True -
全部数字相同的情形。N=1的边界情形。
样例输入
1
4 4 4 4
样例输出
True
小结
- 这一题的一个坑是,如果一行数字只有两个,视为构成等差数列。
- 这道题难度不大。由于上面的坑,所以在OpenJudge上的通过率不算高。
上一篇: 郭明錤送最新报告:iPhone SE2明年初发布、售价有惊喜
下一篇: 小区开车笑料不吝啬