蓝桥杯算法(最大公约数、前缀和、快速幂、二分查找

求最大公约数

# 定义一个函数
 def hcf(x, y):
     """该函数返回两个数的最大公约数"""

    # 获取最小值
     if x > y:
         smaller = y
     else:
         smaller = x

     for i in range(1, smaller + 1):
         if ((x % i == 0) and (y % i == 0)):
             hcf = i

     return hcf

快速幂

 x,p,m
 while p:
     if p%2= * x % m=0:
         res = res * x % m
     p /= 2
     x = x

二分查找

 n = [1, 2, 1, 3, 4, 2, 1, 1]
 n.sort()
 k = 2
 ans = []
 l = 0
 r = len(n) - 1
 print(n)
 while l < r:
     mid = (l + r) >> 1
     if n[mid] == k:
         ans.append(mid)
         r = mid
     else:
         l = mid+1
 print(ans)

前缀和

n, k = [int(e) for e in input().split()]
a = [0]
s = {0:1}
ans = 0
sm = [0]
for i in range(1,n+1):
    a.append(int(input()))
    sm.append((sm[i-1]+a[i])%k)
    if sm[i] not in s.keys():
        s.update({sm[i]:1})
    else:
        s[sm[i]] += 1
for v in s.values():
    ans += v*(v-1)//2
print(ans)

杨辉三角

n = int(input)
nums = [[0]*n for i in range(n)]
for i in range(n):
    for j in range(n):
        if j==0:
            nums[i][j]=1
        else:
            nums[i][j] = nums[i-1][j-1] + nums[i-1][j]
        if nums[i][j]!=0:
            print(nums[i][j],end=" ")
    print()

进制转换

点击此处跳转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值