题目

从标准输入读入一个包含 n 个元素的整数数组和一个目标值 x,删除数组中所有取值等于 x 的元素,并输出压缩后的新数组。

输入格式:第一行输入数组长度 n;第二行输入 n 个整数;第三行输入待删除的目标值 x。

输出格式:第一行输出删除后剩余元素的个数;第二行输出压缩后的数组元素(若全部被删则第二行可为空),末尾换行。

数据范围与约定:1 ≤ n ≤ 1000。

思路与算法

1. 列表推导式过滤
使用 [v for v in a if v != x] 快速保留有效元素。

2. 原地双指针覆盖
也可使用读写双指针在原列表上原地覆盖,空间复杂度降为 O(1)。

完整程序

n = int(input())

# 累加阶乘和:1! + 2! + ... + n!
total = 0
f = 1
for i in range(1, n + 1):
    f *= i
    total += f

print(total)

运行示例

输入:

6
1 2 3 2 4 2
2

输出:

1 3 4