题解 2305: 蓝桥杯2019年第十届省赛真题-等差数列

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

平凡の解法

解题思路:我们看到这个题目,可以很快的转化为作为求排序后数组的两两之间的最小问题,当然也可以不需要排序,当然我这边直接偷懒直接sort,但是你追求效率的话你也可以直接快排,二分排,创建一个比较的大的假定公差d,然后一个for循环求最小值就可以了,不排序的话可以直接abs,当然注意边界情况。

菜鸡的题解007——等差数列

gcd(最小公约数)要记住(我是菜鸡,差点把冒号前后写错了)思路:用sort排序,然后依次从大到小求相邻数的差值,然后求这些差值的最大公约数,就是最大的公差(一定要注意不存在最大公约数的情况,即存在两个数相等,此时应输出n的值)参考代码:#include#include
优质题解

2305: 蓝桥杯2019年第十届省赛真题-等差数列(C语言代码)快速排序/碾转相除法

##解题思路:等差数列,首项a1,尾项an,公差为d。由各数间的关系得n=(an-a1)/d+1。用数组存储输入的数列。公差需由各相邻项的差值的最大公约数计算,当输入的各项为2612,各差值为46,公差为最大公约数2。用辗转相除法求最大公约数。

这题主要是考虑所有数相等的情况,即公差为0

解题思路:对输入排序,然后判断是否公差为0,最后使用等差数列求项公式注意事项:所有数相等的情况参考代码:n=int(input())arr=list(map(int,input().split()))arr.sort()ifarr.count(arr[0])==len(arr):print(len(a

利用最大公因数来求解

摘要:解题思路:注意事项:参考代码:# 求最大公因数 def cal(temp_1, temp_2):     if(temp_1 == temp_2):         return(temp_1)……

40s过,思路简单

摘要:解题思路:注意事项:参考代码:#include<bits/stdc++.h>using namespace std;#define ll long longint a[100009];int main……

找最大公约数也是最小的公差

解题思路:因为是从等差数列取的几个数,所以这几个数一定是公差的几倍或者就是公差,为了满足n个数都能匹配,所以我们要选择最小公差注意事项:参考代码:n=int(input())a=list(map(int,input().split()))a.sort()d=[]foriinrange(1,