解题思路
- 计算总可能数:使用两张致命射击,且不消灭同一个随从,总选择方式为
n × (n-1)(第一张选n个随从之一,第二张选剩下的n-1个)。 - 计算符合条件的可能数:恰好消灭最左边和最右边随从的方式有 2种(先杀左后杀右,或先杀右后杀左)。
- 计算概率:概率 = 符合条件的可能数 ÷ 总可能数,即
2 / [n × (n-1)]。
代码实现(Python)
n = int(input())
if n == 2:
# 当n=2时,总可能数是2×1=2,符合条件的是2种,概率为1.0
prob = 1.0
else:
prob = 2.0 / (n * (n - 1))
# 保留10位小数输出
print("{0:.10f}".format(prob))
保留十位小数输出的方法有很多:
方法1:使用字符串格式化(format方法)
这是最常用的方法之一,通过
format函数可以精确控制小数位数。num = 2.0 / (3 * 2) # 示例数值 result = "{0:.10f}".format(num) print(result) # 输出:0.3333333333
- 格式说明:
:.10f表示保留10位小数,f表示浮点数格式。方法2:使用f-string格式化(Python 3.6+)
这是一种更简洁的字符串格式化方式,适合Python 3.6及以上版本。
num = 2.0 / (4 * 3) result = f"{num:.10f}" print(result) # 输出:0.1666666667
- 优势:语法更简洁,可读性强,在处理变量时非常方便。
方法3:使用round()函数
round()函数可以对浮点数进行四舍五入,指定保留的小数位数。num = 2.0 / (5 * 4) result = round(num, 10) # 注意:round返回的是浮点数,直接打印可能会省略末尾的0 print("{0:.10f}".format(result)) # 确保输出10位小数,输出:0.1000000000
- 注意:
round()返回的是浮点数,当末尾有0时可能不会显示,通常需要结合格式化输出才能保证显示10位。方法4:使用decimal模块(高精度计算)
对于需要高精度小数计算和格式化的场景,
decimal模块是更好的选择。from decimal import Decimal, getcontext # 设置精度为10位小数 getcontext().prec = 10 num = Decimal(2) / (Decimal(6) * Decimal(5)) # 格式化输出10位小数 result = "{0:.10f}".format(num) print(result) # 输出:0.0666666667
- 优势:适合金融、科学计算等对精度要求极高的场景,可以避免浮点数的精度误差。



京公网安备 11010502036488号