蓝桥杯填空题汇总

文章目录

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

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
相关推荐
_OP_CHEN7 小时前
算法基础篇:(四)基础算法之前缀和
c++·算法·前缀和·蓝桥杯·acm·icpc·算法竞赛
No0d1es1 天前
2025年第十六届蓝桥杯青少组省赛 C++编程 中级组真题
c++·青少年编程·蓝桥杯·省赛
@小码农1 天前
2025年北京海淀区中小学生信息学竞赛第一赛段试题(附答案)
人工智能·python·算法·蓝桥杯
程序猿_极客2 天前
【2025】16届蓝桥杯 Java 组全题详解(省赛真题 + 思路 + 代码)
java·开发语言·职场和发展·蓝桥杯
.ZGR.4 天前
第十六届蓝桥杯省赛 C 组——Java题解1(链表知识点)
java·算法·链表·蓝桥杯
summer__77775 天前
33-蓝桥杯报名通知
蓝桥杯
关于不上作者榜就原神启动那件事6 天前
14届蓝桥杯省赛c++b组,全题题解
职场和发展·蓝桥杯
.ZGR.7 天前
蓝桥杯高校新生编程赛第二场题解——Java
java·算法·蓝桥杯
云青山水林12 天前
零基础如何准备蓝桥杯
蓝桥杯
超级大只老咪13 天前
蓝桥杯知识点大纲(JavaC组)
java·算法·蓝桥杯