#8896. 小洛的幸运数字
小洛的幸运数字
小洛的幸运数字
版权信息:
任务总览
任务名称 | 时间限制 | 内存限制 | 分数 |
---|---|---|---|
过滤幸运数字 | 1 sec | 512 MB | 100 points |
题目描述
小洛得到了 n
个整数,他认为 **个位数是 3
**,或者 是 3
的倍数的整数 是不好的,应当被排除。
请编写一个程序,将这些不好的数字排除掉,计算:
- 剩余数字的总和。
- 剩余数字的个数。
输入格式
- 第一行 包含一个整数
n
,表示数字个数(1 ≤ n ≤ 1000
)。 - 第二行 包含
n
个整数a_1, a_2, ..., a_n
(0 ≤ a_i ≤ 10000
)。
输出格式
输出 两个整数,用空格隔开:
- 符合条件的数字的总和。
- 符合条件的数字的个数。
样例
输入
5
12 23 35 47 50
输出
132 3
题目分析
我们需要过滤掉以下两种情况:
- **个位数是
3
**:x % 10 == 3
- 是
3
的倍数:x % 3 == 0
筛选方法:
- 遍历数组,检查每个数是否满足
x % 10 != 3
且x % 3 != 0
。 - 统计符合条件的数字 总和 和 数量。
解法
步骤:
- 读取
n
和n
个整数。 - 遍历数组,检查是否满足 个位不为
3
且 不是3
的倍数。 - 统计符合条件的数字 总和 和 数量。
时间复杂度分析
- 遍历
n
个数,每个数检查x % 10
和x % 3
,即 O(1) 操作。 - 总复杂度 **O(n)**,可以在
n ≤ 1000
时高效运行。
总结
- 边界检查:
- 处理
a_i = 0
的情况。 - 处理所有
a_i
都被排除时的情况(此时输出0 0
)。
- 处理
- **时间复杂度 O(n)**,适用于
n ≤ 1000
。