P1298 最接近的分数
声明:该博文选自本人CSDN博客,若有雷同,纯属巧合
1 题目简介
题目大纲
已知某个分数分子的取值范围 n n n ,分母的取值范围 m m m ,和一个 d o u b l e double double 浮点数 x x x ,求出满足条件并且最接近 x x x 的最简分数。若有多个正解,则输出 TOO MANY
。
题目难度
本思路算法:剪枝技巧(深度搜索优先)
内容(搜索->剪枝技巧) | 实际难度 |
---|---|
思路难度 | 普 及 − \color{orange}{普及-} 普及− |
剪枝难度 | 省 选 / N O I − \color{purple}{省选/NOI-} 省选/NOI− |
总难度 | 普 及 + / 提 高 \color{lime}{普及+/提高} 普及+/提高 |
2 思路分析
这一道题是我看到过的题面最短的蓝题了……哎,还以为题面短就简单呢 首先想到的思路是把所有分子分母枚举一遍,然而 TLE 。这一题其实和 D F S DFS DFS 扯不上啥关系。最主要的是剪枝搜索和技巧搜索。
2.1 思路分析
最土的办法……把分子和分母全部枚举一遍就可以啦……时间复杂度为 O ( n m ) O(nm) O(nm) 。至于分子和分母,两个循环即可。
然后就是题目中要求的最简分数。如何做到最简呢?最简也就是分母与分子的最大公约数是 1 1 1 ,也可以说是分母与分子互质。所以判断两个数是否组成最简分数只需判断它们的最大公约数是否为 1 1 1 即可。因为 S T L STL STL 里有函数 g c d ( c o n s t gcd(const gcd(const i