Codeforces 1474B: Different Divisors
Codeforces 1474B C++ 一解.
分析
$a$ 至少要有 $4$ 个因子 (自然包括 $1$ 和 $a$ 本身), 且任意两因子的差不小于 $d$. 为使 $a$ 尽可能小, 我们只希望 $a$ 有且仅有 $4$ 个因子, 也就是再确定两个不同的质因子 $p,q$ ($a=pq$, 且不妨设 $p<q$).
一个很显然的事实是: 对于充分大的 $d$, 我们越能保证 $a-q\geq d$ (不会证明故从略), 因此我们只需要在质数表中找到不小于 $1+d$ ($1$ 即是因子升序排列的第一个因子) 的 $p$ (第二个因子) 和不小于 $p+d$ 的 $q$ (第三个因子), 再确保 $a$ (第四个因子) 与 $q$ 的差不小于 $d$ 即可. 经过验证, 对于 $d=1$ 依然有 $a-q\geq d$.
生成质数表
生成质数表的方式有很多. 以下代码中尝试利用 STL 的 vector<int>
动态生成/更新指定范围内的质数表. 当然考虑到 $d\leq 10,000$, 可以直接生成完整长度 (所需的最大质数为 $20,011$, 根据质数定理估计质数表长度为 $2020$) 的质数表.
代码
1 |
|
Codeforces 1474B: Different Divisors
# Related Posts
1.Codeforces 1324B: Yet Another Palindrome Problem
2.Codeforces 363B: Fence & Rust for Competitive Programming
3.Codeforces 1327A: Sum of Odd Integers
4.LeetCode Problem 3: Longest Substring Without Repeating Characters
5.【文件格式探究】EP.2 WAV 音频文件格式
6.Codeforces 1399D: Binary String to Subsequences
7.Codeforces 1368B: Codeforces Subsequences
8.Codeforces 1430C: Numbers on Whiteboard
1.Codeforces 1324B: Yet Another Palindrome Problem
2.Codeforces 363B: Fence & Rust for Competitive Programming
3.Codeforces 1327A: Sum of Odd Integers
4.LeetCode Problem 3: Longest Substring Without Repeating Characters
5.【文件格式探究】EP.2 WAV 音频文件格式
6.Codeforces 1399D: Binary String to Subsequences
7.Codeforces 1368B: Codeforces Subsequences
8.Codeforces 1430C: Numbers on Whiteboard
# Recommend Posts
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort