1246. 等差数列

摘要
Title: 1246. 等差数列
Tag: gcd
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

1246. 等差数列

  • 题意

    数学老师给小明出了一道等差数列求和的题目。
    但是粗心的小明忘记了一部分的数列,只记得其中 N 个整数。
    现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?

  • 思路

    排完序后,求从小到大找相邻两数差的gcd,即是等差数列的公差
    当公差为0时,答案就为n

  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    '''
    Author: NEFU AB-IN
    Date: 2022-03-31 19:49:38
    FilePath: \ACM\Acwing\1246.py
    LastEditTime: 2022-03-31 19:49:38
    '''


    def gcd(a, b):
    return gcd(b, a % b) if b else a


    n = int(input())
    a = list(map(int, input().split()))

    a.sort()
    d = a[1] - a[0]
    for i in range(1, n):
    d = gcd(d, a[i] - a[i - 1])
    if d:
    print((a[-1] - a[0]) // d + 1)
    else:
    print(n)
使用搜索:谷歌必应百度