算法与安全赛道
题目 1
有一根长27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过两只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离,求所有蚂蚁都离开木杆的最短时间和最长时间。(本题由UP主@IT私塾提供)
解析
当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。此举动可看作是并没有掉头而是穿过了对面的蚂蚁。最短时间则可看作以杆中心为原点,左右两端的蚂蚁分别朝左右两端前进,则最短时间为 11cm 处蚂蚁往左走的时间 11s;最长时间可以看作左右两端的蚂蚁分别朝右左两端前进,则最长时间为 3cm 处蚂蚁往右走的时间 24s。题目 2
计算100到10000(包含10000)所有偶数相加结果。(本题由UP主@python学习者提供)
解析
def main(first, second):
res = 0
for i in range(first, second + 1, 2):
res += i
return res
if __name__ == '__main__':
print(main(100, 10000))
输出:
>>> 25002550
题目 3
电视剧《征服》于 2003-03-18 上映,在第九集中,刘华强将卖瓜商贩捅伤,假设捅人剧情发生在 2003-03-26 日,问卖瓜商贩距今 2021-10-24 ,已经被捅了多少天?(本题由UP主@Jack-Cui提供)
解析
import time
import datetime
def get__days(date1, date2):
date_1 = time.strptime(date1, "%Y-%m-%d")
date_2 = time.strptime(date2, "%Y-%m-%d")
date_1 = datetime.datetime(date_1[0], date_1[1], date_1[2])
date_2 = datetime.datetime(date_2[0], date_2[1], date_2[2])
diff_days = (date_2 - date_1).days
return diff_days
if __name__ == '__main__':
print(get__days("2003-03-26", "2021-10-24"))
输出:
>>> 6787
题目 4
密码安全技术也属于网络安全领域中的重要技术,应用于网络数据的安全加密传输。现有一个加密算法,加密方法很简单:将每一个字母加5,即a加密成f,这种算法的密钥就是5。那么这种加密算法属于
解析
对称加密算法题目 5
现有5个元素,它们各不相同,且两两之间可比较。我们可以通过反复比较两个元素的大小,来找出5个元素中的中位数。请问最少用多少次比较,可以确保总能找到 5个元素的中位数?(本题由UP主@算法主义提供)
解析
6次题目 6
期末考试结束了,老师决定带学生们去卷饼店吃烤鸭饼。老师看到大饼和鸭子,搞了一个活动:每人可以拿走一张饼,谁卷到的食物美味程度总和最高,谁就能获得称号:卷王之王!Vita很想得到“卷王之王”称号,他的大饼可以装下大小总和不超过500的食物,现在有7块鸭肉和6根黄瓜,每份食物都有它的大小和美味程度。 每块鸭肉的大小:85、86、73、66、114、51、99 每块鸭肉的美味程度:71、103、44、87、112、78、36 每根黄瓜的大小:35、44、27、41、65、38 每块黄瓜的美味程度:41、46、13、74、71、27 老师要求大饼里至少有一块鸭肉和一根黄瓜。请问,Vita卷到的食物美味程度总和最大是多少?(本题由UP主@小学生Vita君提供)
解析
593题目 7
狸子找了一名粉丝做游戏,初始每人财富相等,每轮游戏中每个人都要付1元随机(等概率)给两人中的一人,记每轮游戏后最富和最穷玩家的差距为x(每个人的财富不设上下限),则在足够多的n轮游戏后,以下描述正确的是?(本题由UP主@狸子LePtC提供)
解析
x正比于根号n增加题目 8
一个小孩练习爬台阶,一共10级台阶,小孩可以一次向上选择爬1-3级。但是第3级和第6级台阶被施加了魔法,小孩一旦踏上就会停下来就开始跳《新宝岛》。那么,不让小孩跳《新宝岛》的爬法一共有多少种?(本题由UP主@魔法小分队队长提供)
解析
def floor(param):
param = int(param)
if param == 1:
return 1
elif param == 2:
return 2
elif param == 3:
return 4
else:
res = floor(param - 1) + floor(param - 2) + floor(param - 3)
return res
if __name__ == '__main__':
print(floor(10))
输出:
>>> 274
该算法为不跨3、6级台阶算法。该题正确答案为:42
题目 9
香钟(又名火绳钟)是一种使用燃烧香计时的方法,采用榆树皮粉加入少量秸秆和自然元素,配合一定比例的水搅拌均匀后倒模制成香,根据倒模出不同长度、粗细的香,经过燃烧测量可以生产出各种单位时间的计时香,例如辰香(2小时),刻香(15分钟)等。 土堡会战中,上将军安排左右前卫营于丑时出发,约定出发后5刻(1小时15分)分别从敌人大本营西侧与北侧奇袭敌营。营中刻香由于保管不当尽毁,目前营中只有辰香,且辰香不能折断也无法均匀分割,作为左前卫营行军参谋的你要拿出具体的计时方案。请问要想确定出5刻的时长,至少需要多少根辰香?(本题由UP主@黑马程序员提供)
解析
将4柱辰香分别记为1, 2, 3, 4,将1号两端点燃的同时将2号点燃。当1号燃尽时2号剩余1小时,此时将2号末端点燃的同时将3号点燃。2号燃尽时3号剩余90分钟,此时将3号末端点燃的同时将4号点燃,3号燃尽花费45分钟,则4号剩余 $120-45=75$ 分钟。故至少需要4柱辰香。题目 10
半仙君和粉丝两人打赌,每人喊1-3中的一个数并依次累加,谁先喊到30谁赢,请问先喊几有稳赢的可能性?(本题由UP主@半仙君_提供)
解析
30减去2剩28,此时只要喊出的数字与粉丝喊出的数字之和为4便可。故先喊的数字为2。题目 11
共有n瓶药和4个老鼠,其中只有一瓶毒药,老鼠吃了1天就挂了,现在仅有1天的时间让你找出毒药(每瓶药水都要由老鼠实验喔),请问n最多等于几?(本题由UP主@半仙君_提供)
解析
将药瓶按顺序标序。1. 将1~4号分别喂给4只老鼠。
2. 将5~9号两两交叉喂给4只老鼠。(5、6喂给第一只,6、7喂给第二只...)
3. 将10、11、12、13号分别同时喂给三只老鼠。(10号喂给第2、3、4只,11号喂给第1、3、4只,12号喂给第1、2、4只,13号喂给第1、2、3只)
4. 将第14号同时喂给4只老鼠。
第二天若只死了一只,则对应标号为毒药。若死了两只,则两只老鼠中有相同序号的药为毒药。若死了三只,则按序区分出10、11、12、13。若死了四只则为14号。若都没死则为15号。故n最多为15。
根据以1、0区分是否为毒药,该题可演化为“具有4位数的二进制数有多少种”,即“4位二进制数最大为多少”。
安全攻防挑战赛赛道
题目 1
题目地址:https://security.bilibili.com/sec1024/q/r1.html
解析
该题目为16进制的AES加密,密文为 happy_1024_2233FLAG 为 a1cd5f84-27966146-3776f301-64031bb9

题目 2
题目地址:https://security.bilibili.com/sec1024/q/r2.html
解析
进入后台,查找配置项代码FLAG 为 36c7a7b4-cda04af0-8db0368d-b5166480

题目 3
题目地址:https://security.bilibili.com/sec1024/q/r3.html
解析
不是很懂PHP,查找了相关教程把地址给蒙出来了,地址栏需要结合linux命令
