题目
小M有一个二进制字符串 s,以及一个正整数n。小M想知道,对于[1,n]范围内的每个整数,其二进制表示是否都是字符串s的某个子字符串。一个子字符串是字符串中的连续字符序列。
如果s包含[1,n]范围内每个整数的二进制表示,返回 true,否则返回 false。
测试样例
样例1:
输入:s=“0110",n=3
输出:True
样例2:
输入:s=“1001",n=4
输出:False
样例3:
输入:s="1100101",n=6
输出:True
解题思路
- 遍历从
1到n的每个整数。 - 将每个整数转换为其二进制表示的字符串。
- 检查这个二进制字符串是否是
s的子字符串。 - 如果所有整数的二进制表示都是
s的子字符串,则返回True,否则在发现第一个不匹配的整数时返回False。
代码实现
def solution(s: str, n: int) -> bool:
# 遍历从1到n的每个整数
for i in range(1, n + 1):
# 将整数转换为二进制字符串,并去掉前缀'0b'
binary_str = bin(i)[2:]
# 检查二进制字符串是否是s的子字符串
if binary_str not in s:
return False
return True
if __name__ == '__main__':
print(solution(s="0110", n=3) == True)
print(solution(s="1001", n=4) == False)
print(solution(s="1100101", n=6) == True)
题目
给个知形和六固定点需要计算一个以点户为圆心明最小员,使得以员元全全覆孟的矩形,并计算该圆的面积。圆的半径是点P 到矩形四个顶点中最远距离,而面积可以通过公式 A= π·/ 来计算。需要注意的是,兀取值为 3.1415926536。
例如,给定矩形的左下角坐标为(X,),右上角坐标为(%,),点 P的坐标为(Xp,yp)你需要找到使圆能够完全覆盖矩形的最小面积,面积保留两位小数。
测试样例
样例1:
输入:x1=0,y1=0,x2=1,y2=1,xP =0,yP = 0
输出:'6.28'
样例2:
输入:x1=-2,y1=-2,x2=2,y2=2,xP=0,yP =0输出:'25.13'
样例3:
输入:x1=-3,y1=-1,x2=1,y2=2,xP =0,yP =0输出:'40.84'
解答思路
- 理解问题:我们需要计算一个圆的面积,这个圆的圆心在点 PP,并且能够完全覆盖矩形。这意味着圆的半径至少是点 PP 到矩形四个顶点中任意一个顶点的最远距离。
- 计算距离:我们使用欧几里得距离公式来计算点 PP 到矩形四个顶点的距离。对于每个顶点 (xi,yi)(x i,y i),距离 dd 可以通过公式 d=(xi−xP)2+(yi−yP)2d=(x i−x P)2+(y i−y P)2 计算。
- 确定半径:在计算出所有距离后,我们选择最大的那个距离作为圆的半径。这是因为圆需要覆盖矩形,所以半径至少是到最远顶点的距离。
- 计算面积:一旦我们有了半径,我们就可以计算圆的面积。圆的面积公式是 A=πr2A=π r2,其中 rr 是半径,ππ 是圆周率,这里取值为 3.1415926536。
- 格式化输出:最后,我们需要将计算出的面积保留两位小数,并以字符串的形式输出。
- 代码实现:将上述思路转化为代码,我们需要定义一个函数
solution,它接受矩形的左下角和右上角坐标以及点 PP 的坐标作为输入参数,然后返回计算出的圆的面积。 - 测试:最后,我们需要测试我们的函数以确保它能够正确地处理不同的输入情况,并返回预期的结果。
代码实现
import math
def solution(x1: int, y1: int, x2: int, y2: int, xP: int, yP: int) -> str:
# 计算点P到矩形四个顶点的距离
distances = [
math.sqrt((x1 - xP)**2 + (y1 - yP)**2),
math.sqrt((x2 - xP)**2 + (y1 - yP)**2),
math.sqrt((x1 - xP)**2 + (y2 - yP)**2),
math.sqrt((x2 - xP)**2 + (y2 - yP)**2)
]
# 取最大距离作为半径
radius = max(distances)
# 计算圆的面积
area = math.pi * (radius ** 2)
# 保留两位小数并返回结果
return f'{area:.2f}'
if __name__ == '__main__':
print(solution(x1 = 0, y1 = 0, x2 = 1, y2 = 1, xP = 0, yP = 0) == '6.28')
print(solution(x1 = -2, y1 = -2, x2 = 2, y2 = 2, xP = 0, yP = 0) == '25.13')
print(solution(x1 = -3, y1 = -1, x2 = 1, y2 = 2, xP = 0, yP = 0) == '40.84')