5.8 计算wifi 密码

第1关:计算整数幂

任务描述

小明在武汉理工大学读书,学校的wifi密码是楼栋号的房间号次幂的前16位的16进制表示,且其中字母均为大写。本项目就带你一步一步的破解这个密码。

本关任务:编写一个能计算整数的整数次幂的小程序。

相关知识

为了完成本关任务,你需要掌握: 1.幂运算函数

幂运算函数

内置函数pow(base, exp[, mod]) 返回 base 的 exp 次幂;如果 mod 存在,则返回 base 的 exp 次幂对 mod 取余(比 pow(base, exp) % mod 更高效)。 两参数形式 pow(base, exp) 等价于乘方运算符: base**exp。

 
  1. 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转为字符串类型,后续可用字符串方法进行操作。

 
  1. print(str(5070602400912917605986812821504))

输出: '5070602400912917605986812821504'

字符串切片

s[m: n] 可以返回字符串s中序号从m开始(包括m)到n结束(包括n)的子字符串。m省略时从第一个字符开始,n省略时到最后一个字符结束(包括最后一个字符)

 
  1. 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转为整数类型,后续可用整数方法或函数进行运算。

 
  1. print(int('507060240091'))

输出: 507060240091

整数转十六进制

内置函数hex(x)可以将整数转换为以“0x”为前缀的小写十六进制字符串。

 
  1. 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的副本,其中所有区分大小写的字符均转换为大写。 注意,括号中无参数,这个方法作用在点前面的字符串上,将前面字符串中的小写字母转为大写,其他字符不变。

 
  1. 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省略时到最后一个字符结束(包括最后一个字符)

 
  1. 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())

  • 31
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值