蓝桥杯填空题汇总

文章目录

法无定法,在于因时因势
难如填空题,也有巧妙的方法去暴力与枚举
确定边界,巧妙判断
输出一部分,找规律

2024年pythonA组省赛A题

2024年pythonA组省赛A题

思路分析:由于2*2和1*1的正方形的数量都很多,所以不可能一个个枚举进行判断,那么我们可以思考如果全部的正方形都组合在一起,能够拼接的理论的最大的边长是多少?我们从这个最大的理论边长逐步往小判断
这里我们应该注意到,如果边长是奇数的话,说明最外面的半圈是由1*1的正方形所包围的,如果是偶数,那么就可以先判断2*2是否够,如果不够,再用1*1补上
如果a为奇数,那么所需的1*1的块数就是2*a-1

python 复制代码
import math
a = 7385137888721
b = 10470245

# 理论上的最大值
maxq = math.sqrt(4*a+b)
# 通过计算发现 maxq = 5435123.0
# 发现是奇数,那么就判断1*1的模块是否能够包围半圈
# 需要的数量是 2*(maxq-1)+1
need1 = 2*(maxq-1)+1
print(need1)
# need1 = 10870245.0
# 发现 need > b ,所以这个maxq不满足,那么我们就判断maxq-1的情况
maxq = maxq-1 # 此时的maxq 是5435122,是偶数,那么我们首先判断这个2*2的面积是否满足
need2 = (maxq//2)**2
print(need2)
# need2 = 7385137788721 正好等于 a
# 所以结果就是 5435122

2024年pythonA组省赛B题

2024年pythonA组省赛B题

思路分析:由于数字很大,所以不太可能逐一暴力,又因为是求解数目的题目,所以可以考虑先输出1000范围获得更大一点范围的结果,查看是否有规律!

python 复制代码
def cheng(i):
    ans = 1
    for i in range(1,i+1):
        ans*=i
    return ans

for i in range(1001):
    if ((1+i)*i//2 - cheng(i))%100 == 0:
        print(i,end=" ")
print()
# 结果是 1 3 24 175 199 200 224 375 399 400 424 575 599 600 624 775 799 800 824 975 999 1000
# 可以看到除了 1 和 3
# 每200个数会出现 以24,75,99,00 结尾的四个数
a = 2024041331404202
zheng = a // 200
yu = a % 200
print(zheng,yu)
# 10120206657021 2
# 结果
# 由于余数 yu 小于24,所以余数部分不会产生新的结果,我们只需用开始的1和3 加上后面的 4*zheng即可
ans = 2 + 4* zheng
print(ans)
# 结果就是 40480826628086
相关推荐
黑泽明Coding1 天前
mac编译vst3sdk
macos·职场和发展·蓝桥杯
咸鱼爱学习2 天前
【题解】 [蓝桥杯 2019 省 B] 特别数的和
算法·职场和发展·蓝桥杯·模拟·枚举
笙歌已沫2 天前
蓝桥杯2024年第15届B组试题D
算法·职场和发展·蓝桥杯
前端小超超12 天前
capacitor配置ios应用图标不同尺寸
ios·蓝桥杯·cocoa
汉克老师14 天前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(4 、移动石子)
c++·算法·蓝桥杯·蓝桥杯c++·c++蓝桥杯
旭意14 天前
C++微基础蓝桥杯之旅9.9-9.12
c++·算法·蓝桥杯
HAH-HAH15 天前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学
汉克老师15 天前
第十四届蓝桥杯青少组C++选拔赛[2023.1.15]第二部分编程题(2 、寻宝石)
c++·蓝桥杯·蓝桥杯c++·c++蓝桥杯·蓝桥杯选拔赛
汉克老师15 天前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(5、机甲战士)
c++·算法·蓝桥杯·01背包·蓝桥杯c++·c++蓝桥杯
Jared_devin15 天前
二叉树算法题—— [蓝桥杯 2019 省 AB] 完全二叉树的权值
数据结构·c++·算法·职场和发展·蓝桥杯