算法作业题
算法作业记录 担心很多东西学过就忘了,就写 blog 加深印象和后期回顾 Work 1 1.求最小生成树的Prim算法 题目描述: 请编写程序,实现在带权的无向图中求最小生成树的 Prim 算法。 注意:当多个待收录顶点到当前点集的距离等长时,按编号升序进行收录。 输入格式: 输入首先在第一行给出两个正整数,依次为当前要创建的图的顶点数 n(≤100)和边数 m。 随后 m 行,每行给出一条无向边两端点的编号、权重。顶点编号从 0 开始,权重(≤100)为整数。同行数字均以一个空格分隔。 输出格式: 参考样例。 首先在一行中输出 total weight = x,其中 x 为最小生成树中所有边的总权重。如果最小生成树不存在,则 x 为 −1。 随后在一行中按顶点编号升序输出每个顶点在最小生成树中的父结点的编号。为输出简单起见,每个数字后有一个空格。 注意:此处默认顶点 0 为最小生成树的根结点,其父结点编号规定为 −1。算法初始化时,所有顶点(除了根结点)的父结点编号默认为 0。 输入样例 1: 6 9 0 1 1 0 2 3 1 2 6 1 3 2 2 3 7 2 4 5 ...
moectf-2025历程
MOECTF-2025 因为有点懒然后中途弃坑了(doge) Crypto Crypto入门指北 签到题,题目代码如下: from Crypto.PublicKey import ElGamal from Crypto.Random import get_random_bytes, random from Crypto.Util.number import * from random import * from secret import flag def generate_elgamal_keypair(bits=512): p = getPrime(bits) for _ in range(1000): g = getRandomRange(2, 5) if pow(g, (p - 1) // 2, p) != 1: break x = randrange(2, p - 1) y = pow(g, x, p) return p, g, y, x key=generate_elgam...
smb坐牢实录
今天是2025.07.19,"期待已久"的熵密杯正式开赛了 早上10点正式开赛,但是7点半就要上车了,明明只有40min左右的车程,但是不知道是为什么主办方要我们那么早起床,来比赛场地还打了一会游戏(bushi) 等了好一会,开幕式终于开始了,该说不说,赛场布置的大屏幕还是非常好看的,高刷新率、高帧率,把领导讲话的气场展现得淋漓尽致 开幕式结束,比赛就随之开始了,上来硬控5min下载3道初始赛题的zip,3个文件整整齐齐都是49.7MB,第一反应就是先下出来看一眼。比赛第3分钟左右,当时大部分队伍连赛题都还没下载完,中科大的Nebula已经拿下初始赛题3的一血了,当时隔壁的队伍惊呼“我们都还在下赛题!”。当然,这是整场比赛最简单的一题,也是我们队唯一能做的一题了(主要还是HvAng的功劳,反正我没看出来) 初始赛题3题目代码如下: from typing import List, Callable from hashlib import sha256 def hex_to_32byte_chunks(hex_str): # 确保十六进制字符串长度是6...
小嘟嘟的长城杯CTF
赛前 忙着复习(真bushi),已经好几天没看crypto了,进到nc之前还有点心虚。当我看到HvAng和Chimedal两个人一脸奸笑的时候就知道今天注定是非常逆天的了。 比赛开始了,留给小嘟嘟的时间不多了 进到题目里面一看,第一道不会,第二道还好,别的队陆陆续续开始有血了之后也是着手去做了。题目代码如下: from Crypto.Util.number import getPrime, bytes_to_long from random import randint import os FLAG = os.getenv("FLAG").encode() flag1 = FLAG[:15] flag2 = FLAG[15:] def crypto1(): p = getPrime(1024) q = getPrime(1024) n = p * q e = 0x10001 x1=randint(0,2**11) y1=randint(0,2**114) x2=randint(0,2**11) y2=randin...
太baby了
HvAng真的太baby了 昨天被一道模运算的crypto困住了,搞完感觉很简单,但是HvAng太baby了,因为他给我推了一道baby_hint,我搞了好久,你知道这对一个新手伤害多大吗?话不多说,直接展示题目 import gmpy2 import libnum import uuid from secret import flag m=libnum.s2n(flag) p=libnum.generate_prime(512) q=libnum.generate_prime(512) e=65537 n=p*q hint1=pow(2023*p+2022*q,1919,n) hint2=pow(2022*p+2023*q,9191,n) c=pow(m,e,n) print("hint1=",hint1) print("hint2=",hint2) print("n=",n) print("c=",c) ''' hint1= 8353579951520473019128840311955917938814797496830135776864475676920539663506...