1 条题解
-
1
10 pts
没啥好说的,暴力就完了,可能 比较大,用 hash 或者其他什么方法处理一下就好了。
30 pts
先考虑哪些数可能会产生重复。
对于第 行,显然只有第 行上的数可能与它有重复。
考虑去计算这个东西,设 表示对应的答案。
问题转化为 ,求 有多少个不同的取值。
由于 是 级别的,可以直接暴力枚举,然后枚举 就做完了。
时间复杂度 。
代码可以看附加文件中的
brute force.cpp
。60 pts
这档分是白给的,知道上面的结论后,可以发现当 时显然 。
转换一下,令 ,这个同样也可以暴力求,那么答案只需要减掉 的就好了。
时间复杂度 。
100 pts
依然考虑计算 ,考虑如何更快计算。
分开计算,考虑在 上有多少个不同的取值。
对这个区间产生贡献的显然 。
比较容易想到容斥,枚举一下选那些数,令这些数的 Lcm 为 ,那么对应的答案就是 ,乘上个容斥系数就好了。
但会发现暴力枚举时间复杂度是 ,依然爆炸。
考虑如果我选择 ,那么 在这个区间中的数必然包含在 中。
所以可以把每个数的倍数减掉。
以内这样可以减掉许多数,最后剩下来的数稳定在 个左右。
所以就快速求出了 ,总时间复杂度 。
代码可以看附加文件中的
std.cpp
。
- 1
信息
- ID
- 89
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 7
- 已通过
- 2
- 上传者