📜  门|门 IT 2006 |第 50 题(1)

📅  最后修改于: 2023-12-03 15:28:48.234000             🧑  作者: Mango

题目概述

这是 "门|门 IT 2006" 的第 50 题,是一道程序设计题目。在这道题目中,我们需要对给定的输入进行一定的处理,并输出给定的结果。

题目描述

给定一个字符串,表示一个整数序列,序列中的数字是以空格分隔的。

需要对这个序列进行如下处理:

  1. 去除其中的重复数字,并将数字按照升序排序。
  2. 对去重后的数字进行判断,如果这些数字可以配对成一组“大数+小数=100”的形式,则将其输出。
输入格式

以字符串的形式输入一个整数序列,其中数字以空格分隔。

输出格式

在第一行输出去重并排序后的数字,数字之间用空格隔开。

在接下来的若干行中,每行输出一组符合条件的“大数+小数=100”形式的数字,大数和小数之间用"+"号连接,大数和小数与等式之间用"="号连接。

样例输入
3 4 4 2 8 7 12 19 20 1
样例输出
1 2 3 4 7 8 12 19 20
1+99=100
2+98=100
3+97=100
4+96=100
7+93=100
8+92=100
12+88=100
解题思路

题目与数据处理密切相关。

输入的字符串可以用 split 方法将其拆分成字符串数组,进而转化为数字数组。

数字数组去重可以使用 set 去重。

数字数组排序可以使用数组的 sort 方法。

检查数字数组中的数字是否可以组成符合要求的数字对可以使用两层循环遍历的方法。

输出时,建议使用字符串拼接方法将符合条件的数字对转化为字符串后输出。

代码片段
def main(input_str: str) -> str:
    nums = input_str.strip().split()
    nums = list(map(int, nums))
    nums = sorted(set(nums))

    res = []
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            if nums[i] + nums[j] == 100:
                res.append(f"{nums[i]}+{nums[j]}=100")

    return f"{' '.join(map(str, nums))}\n{'\n'.join(res)}"
参考链接