python蓝桥杯真题刷题打卡 | day3

目录

  • 蛇形填数
  • 棋盘放麦子
  • 既约分数
  • 跑步锻炼
  • 空间
  • 数列求值

蛇形填数

python蓝桥杯真题刷题打卡 | day3_第1张图片
数据:

1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...

规律及代码:
python蓝桥杯真题刷题打卡 | day3_第2张图片

第1行    1
第2行    5     1+  4*1
第3行   13     5+  4*2
第4行   25     13+ 4*3
#  代码 
res=1
for i in range(1,20):
  res += 4*i

print(res)

棋盘放麦子

2012 填空题 省赛

python蓝桥杯真题刷题打卡 | day3_第3张图片

import os
import sys

# 请在此输入您的代码
print(2**64-1)

既约分数

2021 省赛 填空
python蓝桥杯真题刷题打卡 | day3_第4张图片
直接暴力

import os
import sys
import math 
# 请在此输入您的代码
c=0
for i in range(1,2021):
    for j in range(1,2021):
    	# math.gcd(i,j)  求i,j的最大公约数,如果是1,说明是
        if math.gcd(i,j)==1:
            c+=1
print(c)


最小公倍数

def lcm(x, y):
    """
    :return: 最小公倍数
    """
    #  获取最大的数
    if x > y:
        greater = x
    else:
        greater = y

    while (True):
        if ((greater % x == 0) and (greater % y == 0)):
            lcm = greater
            break
        greater += 1

    return lcm

最大公约数

def hcf(x, y):
    """
    :return: 该函数返回两个数的最大公约数
    """
    # 获取最小值
    if x > y:
        smaller = y
    else:
        smaller = x

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

跑步锻炼

填空 2020 省赛
python蓝桥杯真题刷题打卡 | day3_第5张图片
代码:

import os
import sys

# 请在此输入您的代码
import datetime

start = datetime.date(2000, 1, 1)
end = datetime.date(2020, 10, 1)
days = datetime.timedelta(days=1)
ans = 0

while end >= start:
    #   月初         或        星期一
    if start.day == 1 or start.weekday() == 0:
        ans += 2
    else:
        ans += 1
    start += days
print(ans)

空间

2021 省赛 普通填空
python蓝桥杯真题刷题打卡 | day3_第6张图片
分析及代码:

# 256MB = 256 * 1024 *1024 (B)
# 32bit = 32//8 (B)  
  这里区分一下  
# 32位二进制可表示的数       2**32
  32位二进制所占的存储空间   32//8   


total = 256*1024*1024
a = 32//8
print(total//a)

数列求值

2019 填空 省赛
python蓝桥杯真题刷题打卡 | day3_第7张图片
代码:
注意 这道题不能用递归,时间太长,栈内存不够

a, b, c, d = 1, 1, 1, 0
for i in range(4, 20190325):
	# 因为要最后4位数字  我们只需要低位数字的变化
	# 高位数字可以丢掉,减少运行时间
    d = (a + b + c) % 10000 
    a, b, c = b, c, d
print(a, b, c, d)

你可能感兴趣的:(python算法,python,蓝桥杯,开发语言)