解题思路

  1. 计算总可能数:使用两张致命射击,且不消灭同一个随从,总选择方式为 n × (n-1)(第一张选n个随从之一,第二张选剩下的n-1个)。
  2. 计算符合条件的可能数:恰好消灭最左边和最右边随从的方式有 2种(先杀左后杀右,或先杀右后杀左)。
  3. 计算概率:概率 = 符合条件的可能数 ÷ 总可能数,即 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
  • 优势:适合金融、科学计算等对精度要求极高的场景,可以避免浮点数的精度误差。