第1关:计算整数幂
任务描述
小明在武汉理工大学读书,学校的wifi密码是楼栋号的房间号次幂的前16位的16进制表示,且其中字母均为大写。本项目就带你一步一步的破解这个密码。
本关任务:编写一个能计算整数的整数次幂的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.幂运算函数
幂运算函数
内置函数pow(base, exp[, mod]) 返回 base 的 exp 次幂;如果 mod 存在,则返回 base 的 exp 次幂对 mod 取余(比 pow(base, exp) % mod 更高效)。 两参数形式 pow(base, exp) 等价于乘方运算符: base**exp。
print(pow(2,10))
输出: 1024
编程要求
根据提示,在右侧编辑器补充代码,输入楼栋号和房间号,计算并输出楼栋号的房间号次幂。
测试说明
平台会对你编写的代码进行测试:
测试输入: 4 # 4号楼
102 # 102号房间
预期输出: 25711008708143844408671393477458601640355247900524685364822016
代码如下:
building_num = int(input())
room_num = int(input())
print(pow(building_num,room_num))
第2关:输出幂运算结果的前n位数
任务描述
小明在武汉理工大学读书,学校的wifi密码是楼栋号的房间号次幂的前16位的16进制表示,且其中字母均为大写。本项目就带你一步一步的破解这个密码。
本关任务:编写一个能输出一个整数的整数次幂的前n位数的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.整数转字符串 2.字符串切片
整数转字符串
str(number)可以将整数num转为字符串类型,后续可用字符串方法进行操作。
print(str(5070602400912917605986812821504))
输出: '5070602400912917605986812821504'
字符串切片
s[m: n] 可以返回字符串s中序号从m开始(包括m)到n结束(包括n)的子字符串。m省略时从第一个字符开始,n省略时到最后一个字符结束(包括最后一个字符)
print('5070602400912917605986812821504'[:12])
输出: 507060240091
编程要求
根据提示,在右侧编辑器补充代码,在输入楼栋号和房间号,计算并输出楼栋号的房间号次幂的前16位数字。
测试说明
平台会对你编写的代码进行测试:
测试输入: 4 # 4号楼
102 # 102号房间
预期输出: 2571100870814384
a = eval(input())
b = eval(input())
print(str(pow(a, b))[:16])
第3关:整数字符串转为十六进制数
任务描述
小明在武汉理工大学读书,学校的wifi密码是楼栋号的房间号次幂的前16位的16进制表示,且其中字母均为大写。本项目就带你一步一步的破解这个密码。
本关任务:编写一个能输出一个整数的整数次幂的前n位数转为十六进制数的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.整数字符串转整数 2.整数转十六进制
整数字符串转整数
int(str)可以将整数字符串str转为整数类型,后续可用整数方法或函数进行运算。
print(int('507060240091'))
输出: 507060240091
整数转十六进制
内置函数hex(x)可以将整数转换为以“0x”为前缀的小写十六进制字符串。
print(hex(507060240091))
输出: 0x760f253edb
编程要求
根据提示,在右侧编辑器补充代码,在输入楼栋号和房间号,计算并输出楼栋号的房间号次幂的前16位数字的十六进制表示。
测试说明
平台会对你编写的代码进行测试:
测试输入: 4 # 4号楼
102 # 102号房间
预期输出: 0x9226712162ab0
a = eval(input())
b = eval(input())
c = str(pow(a, b))[:16]
print(hex(int(c)))
第4关:字母转大写
本关任务:编写一个能输出一个整数的整数次幂的前n位数转为十六进制数的且使出现的字母都是大写表示的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.字母转大写
整数字符串转整数
str.upper()返回原字符串str的副本,其中所有区分大小写的字符均转换为大写。 注意,括号中无参数,这个方法作用在点前面的字符串上,将前面字符串中的小写字母转为大写,其他字符不变。
print('0x9226712162ab0'.upper())
输出: 0X9226712162AB0
编程要求
根据提示,在右侧编辑器补充代码,在输入楼栋号和房间号,计算并输出楼栋号的房间号次幂的前16位数字的十六进制的大写表示。
测试说明
平台会对你编写的代码进行测试:
测试输入: 4 # 4号楼
102 # 102号房间
预期输出: 0X9226712162AB0
a=eval(input())
b=eval(input())
print(hex(int(str(pow(a,b))[:16])).upper())
第5关:计算wifi密码
任务描述
小明在武汉理工大学读书,学校的wifi密码是楼栋号的房间号次幂的前16位的16进制表示,且其中字母均为大写,结果中不包括十六进制数的引导符“0X”。这一关你将完善自己的程序,使之可以破解所有按这个规则设置的密码。
本关任务:编写一个能输出一个整数的整数次幂的前n位数转为十六进制数的且使出现的字母都是大写表示的小程序。
相关知识
为了完成本关任务,你需要掌握: 1.切片
字符串切片
s[m: n] 可以返回字符串s中序号从m开始(包括m)到n结束(包括n)的子字符串。 m省略时从第一个字符开始 n省略时到最后一个字符结束(包括最后一个字符)
print('0XAE0B158B47387'[2:])
输出: 507060240091
编程要求
根据提示,在右侧编辑器补充代码,在输入楼栋号、房间号和截取数字的位数n,计算并输出楼栋号的房间号次幂的前n位数字的十六进制的大写表示。
测试说明
平台会对你编写的代码进行测试:
测试输入: 4 # 4号楼
102 # 102号房间
16 # 截取数字位数
预期输出: 9226712162AB0
代码如下:
building_num = int(input())
room_num = int(input())
n = int(input())
num = pow( building_num, room_num )
print(hex(int(str(num)[:n]))[2:].upper())