青训营题目数值操作的期望计算问题+a替换函数题解

4 阅读4分钟

数值操作的期望计算问题

1.问题描述

小R有两个正整数 aabb,她将随机选择其中一个数并将其乘以 22。这个操作会进行两次,操作后的两个数之和会有所变化。小R想知道,操作结束后,两个数之和的期望值是多少?

2.解题思路

2.1问题分析

  • 输入:两个正整数 aabb
  • 输出:操作结束后,两个数之和的期望值,格式化为两位小数的字符串。
  • 操作:每次随机选择一个数并将其乘以 22,操作进行两次。

2.2基本思路

  1. 计算所有可能的结果

    • 第一次选择 aa 并乘以 22,第二次选择 bb 并乘以 22
    • 第一次选择 bb 并乘以 22,第二次选择 aa并乘以 22
    • 第一次选择 bb 并乘以 22,第二次选择 bb并乘以 22
    • 第一次选择 aa 并乘以 22,第二次选择 aa并乘以 22
  2. 计算期望值

    • 将所有可能的结果相加,然后除以结果的总数(4)。
  3. 格式化输出

    • 将期望值格式化为两位小数的字符串。

2.3示例

  • 示例1

    • 输入:a = 3, b = 3

    • 输出:'13.50'

    • 解释:

      • 可能的结果:12, 12, 15, 15
      • 期望值:(12+ 12+15+ 15) / 4 =13.50
      • 格式化输出:'13.50'
  • 示例2

    • 输入:a = 5, b = 7

    • 输出:'27.00'

    • 解释:

      • 可能的结果:24, 24, 27, 33
      • 期望值:(24 + 24 + 27 + 33) / 4 = 27.00
      • 格式化输出:'27.00'
  • 示例3

    • 输入:a = 1, b = 1

    • 输出:'4.50'

    • 解释:

      • 可能的结果:4, 4, 5, 5
      • 期望值:(4 + 4 + 5 + 5) / 4 = 4.25
      • 格式化输出:'4.50'

2.4代码

def solution(a: int, b: int) -> str:
   
    sum1 = 2 * a + 2 * b
    sum2 = 2 * b  + 2*a
    sum3 = a + 2 * b * 2
    sum4 = a * 2 * 2 + b
    
    # 计算期望值
    expected_value = (sum1 + sum2 + sum3 + sum4) / 4
    
    # 格式化输出为两位小数的字符串
    return f"{expected_value:.2f}"

if __name__ == '__main__':
    print(solution(3, 3) == '13.50')
    print(solution(5, 7) == '27.00')
    print(solution(1, 1) == '4.50')

3.代码详解

  1. 计算所有可能的结果

    • sum1 表示两次都选择 aa 并乘以 22
    • sum2 表示两次都选择 bb 并乘以 22
    • sum3 表示第一次选择 aa 并乘以 22,第二次选择 bb
    • sum4 表示第一次选择 bb 并乘以 22,第二次选择 aa
  2. 计算期望值

    • 将所有可能的结果相加,然后除以结果的总数(4)。
  3. 格式化输出

    • 使用 f"{expected_value:.2f}" 将期望值格式化为两位小数的字符串。

总结: 通过计算所有可能的操作结果并求其平均值,我们可以得到操作结束后两个数之和的期望值。代码中正确地计算了这些结果,并返回了格式化后的期望值。

1.问题描述

给定一个字符串 s,编写一个函数,将字符串中的小写字母 a 替换为 "%100",并返回替换后的字符串。

a替换函数

2.解题思路

2.1问题分析

  • 输入:一个字符串 s
  • 输出:一个字符串,其中所有小写字母 a 被替换为 "%100"

2.2基本思路

  1. 遍历字符串 s 中的每一个字符。
  2. 如果当前字符是 a,则将其替换为 "%100"
  3. 否则,保持字符不变。
  4. 将所有处理后的字符拼接成一个新的字符串并返回。

2.4代码

def solution(s: str) -> str:
    # 初始化结果字符串
    res = ""
    
    # 遍历输入字符串中的每一个字符
    for c in s:
        # 如果字符是 'a',则替换为 "%100"
        if c == 'a':
            res += "%100"
        # 否则,保持字符不变
        else:
            res += c
    
    # 返回结果字符串
    return res

# 测试代码
if __name__ == '__main__':
    print(solution(s="abcdwa") == '%100bcdw%100')
    print(solution(s="banana") == 'b%100n%100n%100')
    print(solution(s="apple") == '%100pple')

3.代码详解

  1. 函数定义def solution(s: str) -> str:

    • 定义了一个名为 solution 的函数,接受一个字符串 s 作为输入,并返回一个字符串。
  2. 初始化结果字符串res = ""

    • 初始化一个空字符串 res,用于存储替换后的结果。
  3. 遍历字符串for c in s:

    • 使用 for 循环遍历输入字符串 s 中的每一个字符 c
  4. 字符替换

    • if c == 'a'::检查当前字符是否为 a
    • res += "%100":如果是 a,则将其替换为 "%100" 并追加到 res 中。
    • else: res += c:如果不是 a,则直接将字符 c 追加到 res 中。
  5. 返回结果return res

    • 遍历完成后,返回结果字符串 res

至此,完结撒花!