flag62 牛牛的最晚起床时间

本文介绍了一个通过计算多个闹钟时间来确定最晚起床时间以按时到校的算法。该算法首先读取闹钟数量及具体时间,然后根据到校所需时间和上课时间计算出最晚起床时间。

牛牛总是睡过头,所以他定了很多闹钟,只有在闹钟响的时候他才会醒过来并且决定起不起床。从他起床算起他需要X分钟到达教室,上课时间为当天的A时B分,请问他最晚可以什么时间起床 

输入描述:
每个输入包含一个测试用例。
每个测试用例的第一行包含一个正整数,表示闹钟的数量N(N<=100)。
接下来的N行每行包含两个整数,表示这个闹钟响起的时间为Hi(0<=A<24)时Mi(0<=B<60)分。
接下来的一行包含一个整数,表示从起床算起他需要X(0<=X<=100)分钟到达教室。
接下来的一行包含两个整数,表示上课时间为A(0<=A<24)时B(0<=B<60)分。
数据保证至少有一个闹钟可以让牛牛及时到达教室。


# include <stdio.h>

# include <malloc.h>
typedef struct node
{
int Hi;
int Mi;
int sum;
}Node,*Pnode;
int main()
{
int N;
Node t;
scanf("%d",&N);
Pnode clock=(Pnode)malloc(sizeof(Node)*N);
for(int i=0;i<N;i++)
{
scanf("%d%d",&clock[i].Hi,&clock[i].Mi);
getchar();
clock[i].sum=clock[i].Hi*60+clock[i].Mi;
}
for(int i=0;i<N;i++)
for(int j=i+1;j<N;j++)
{
if(clock[i].sum<clock[j].sum)
{
t=clock[i];
clock[i]=clock[j];
clock[j]=t;
}
}
int time,h1,m1;
scanf("%d%d%d",&time,&h1,&m1);
time=h1*60+m1-time;
for(int i=0;i<N;i++)
{
if(clock[i].sum<=time)
{
printf("%d %d",clock[i].Hi,clock[i].Mi);
break;
}
}
return 0;
 } 
### 解密密文并生成MD5值 已知加密函数 \( y = 11x + 19 \) 和密文 `TwwdglDjGdpl`,目标是通过逆变换解密密文,计算明文的MD5值,并以 `flag{}` 格式提交最终答案。 #### 确定字符集和映射关系 字符集通常为标准英文字母和数字,按顺序排列为一个长度为62的字符串[^1]: ```python charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" ``` 每个字符对应一个索引值,例如 `A` 对应索引0,`B` 对应索引1,以此类推。 #### 计算逆变换公式 给定加密函数 \( y = (11x + 19) \mod 62 \),需要找到其逆函数。首先计算乘法逆元 \( 11^{-1} \mod 62 \)。通过扩展欧几里得算法可以得到 \( 11^{-1} \equiv 53 \mod 62 \)[^2]。因此,逆变换公式为: \[ x = (53(y - 19)) \mod 62 \] #### 实现解密逻辑 将密文中的每个字符映射回原始索引值,并应用逆变换公式还原明文字符。以下是Python代码示例[^3]: ```python def decrypt(ciphertext): charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" plaintext = "" for char in ciphertext: if char in charset: idx = charset.index(char) # 应用逆变换公式 decrypted_idx = (53 * (idx - 19)) % 62 plaintext += charset[decrypted_idx] else: plaintext += char # 如果字符不在字符集中,保持不变 return plaintext # 测试解密 ciphertext = "TwwdglDjGdpl" plaintext = decrypt(ciphertext) print(f"Plaintext: {plaintext}") ``` #### 计算明文的MD5值 使用Python的`hashlib`库计算明文的MD5值,并按照指定格式生成flag[^4]: ```python import hashlib def generate_flag(plaintext): md5_hash = hashlib.md5(plaintext.encode()).hexdigest() flag = f"flag{{{md5_hash}}}" return flag # 计算flag plaintext = decrypt(ciphertext) flag = generate_flag(plaintext) print(f"Flag: {flag}") ``` 运行上述代码后,可以得到解密后的明文以及对应的MD5值作为最终答案。 --- ### 注意事项 - 如果密文中包含不在字符集中的字符,需根据实际情况处理。 - MD5值的计算基于解密后的明文,确保输入数据正确无误[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值