【蓝桥杯】【python】省赛真题等差数列

问题描述

在这里插入图片描述

思路

首先把所有数按照顺序排列,然后计算每两个数的差值,计算最大公因数后即可

代码

# 求最大公因数
def cal(temp_1, temp_2):
    if(temp_1 == temp_2):
        return(temp_1)
    else:
        m = max(temp_1, temp_2)
        n = min(temp_1, temp_2)
        r = m % n
        while(r != 0):
            m = n
            n = r
            r = m % n
        return(n)

# main
N = int(input())
a = [int(i) for i in input().split()]
a.sort()
distance = [0 for _ in range(N - 1)]

for i in range(N - 1):
    distance[i] = a[i + 1] - a[i]

re = 10000000
for j in range(N - 2):
    temp = cal(distance[j], distance[j - 1])
    if(temp < re):
        re = temp

if(re == 0):
    print(N)

else:
    temp_re = 0
    for k in range(1, N):
        temp_re += (a[k] - a[k - 1])/re - 1

    print(int(temp_re + N))

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
很好,以下是蓝桥杯python省赛 青少组真题,希望对你有所帮助: 1. 给定两个字符串,判断它们是否是变位词(即它们的字符重排后是否相同)。 输入格式: 第一行包含一个整数n,表示字符串的长度。 第二行包含一个长度为n的字符串。 第三行包含一个长度为n的字符串。 输出格式: 如果给定的两个字符串是变位词,则输出“Yes”,否则输出“No”。 2. 给定一个长度为 n 的整数序和一个整数 m,询问有多少个子段的和恰好为 m。 输入格式: 第一行包含两个整数 n 和 m。 第二行包含 n 个整数,表示整数序。 输出格式: 共一行,包含一个整数,表示和为 m 的子段个数。 3. 小明要把他的若干本书放到书架上。他把一些书放到了书架上,然后又把一些书放到了其他书的上面。现在给定一些书之间的放置关系,我们保证这些关系不会形成环,即不存在一个书 A 放到了另一个书 B 上,同时又有另一个书 C 放到了 A 上。 请你编写一个程序,计算出小明最后得到的书架的高度。 输入格式: 第一行包含一个整数 n,表示给定的书的数量。 接下来n−1行,每行描述一组书的放置关系,包含两个整数u和v,表示书u被放置在书v的上面。 输出格式: 输出一个整数,表示最后得到的书架的高度。 4. 给定一个n×n的矩阵,将其顺时针旋转90度后输出。 输入格式: 第一行包含一个整数n,表示矩阵的大小。 接下来n行,每行包含n个整数,表示矩阵中的元素。 输出格式: 输出旋转后的矩阵,每个元素占一行,元素之间用一个空格隔开。 5. 给定一个长度为n的整数序,求它的最长上升子序的长度(最长上升子序是指一个严格上升的子序,不一定连续)。 输入格式: 第一行包含一个整数n。 第二行包含n个整数,表示整数序。 输出格式: 共一行,包含一个整数,表示最长上升子序的长度。 希望这些题目能够对你的学习有所帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值