当前位置:网站首页>信息学奥赛一本通 1966:【14NOIP普及组】比例简化 | 洛谷 P2118 [NOIP2014 普及组] 比例简化
信息学奥赛一本通 1966:【14NOIP普及组】比例简化 | 洛谷 P2118 [NOIP2014 普及组] 比例简化
2022-07-30 17:33:00 【君义_noip】
【题目链接】
ybt 1966:【14NOIP普及组】比例简化
洛谷 P2118 [NOIP2014 普及组] 比例简化
【题目考点】
1. 枚举
【解题思路】
观察L的范围,为1~100,因此可以分别枚举A’与B’的值,判断哪一组A’/B’ ≥ A/B,并找出A’/B’- A/B最小的那一组值。
对于A’与B’是否互质,可以预先判断二者的最大公约数是否为1。
这一步不做其实也可以。由于A’与B’都是从小到大遍历的,对于A’/B’比值相同的情况,一定是先遍历到A’与B’互质的情况,后遍历到二者不互质的情况。在求最小值时只需要使用’<',即可取到前面的情况而不取后面的情况。
【题解代码】
解法1:使用最大公约数函数判断二者是否互质
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int gcd(int a, int b)
{
if(b == 0)
return a;
return gcd(b, a%b);
}
int main()
{
int a, b, l, ri, rj;//ri,rj记录结果
double d, d1, mind = INF;//mind:最小差值
cin >> a >> b >> l;
d = (double)a/b;//A/B
for(int i = 1; i <= l; ++i)
for(int j = 1; j <= l; ++j)
{
//i:A' j:B'
if(gcd(i, j) == 1)//最大公约数为1,二者互质
{
d1 = (double)i/j;
if(d1 >= d && d1-d < mind)
{
mind = d1-d;
ri = i;
rj = j;
}
}
}
cout << ri << ' ' << rj;
return 0;
}
解法2:不判断互质
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int main()
{
int a, b, l, ri, rj;//ri,rj记录结果
double d, d1, mind = INF;//mind:最小差值
cin >> a >> b >> l;
d = (double)a/b;//A/B
for(int i = 1; i <= l; ++i)
for(int j = 1; j <= l; ++j)
{
//i:A' j:B'
d1 = (double)i/j;
if(d1 >= d && d1-d < mind)
{
mind = d1-d;
ri = i;
rj = j;
}
}
cout << ri << ' ' << rj;
return 0;
}
边栏推荐
- js中的基础知识点 —— BOM
- DLCM - 基于列表上下文信息的重排序模型
- Research on intelligent charging strategy of matlab simulink lithium-ion battery
- 阿里SIM-基于检索的用户行为兴趣CTR模型(Search-based user Interest Model(SIM))
- 华为无线设备Mesh配置命令
- Valid bracketed strings [greedy exercise]
- 阿里巴巴CAN:Embedding前置的特征交互新思路
- 论文阅读之《Quasi-Unsupervised Color Constancy 》
- C陷阱与缺陷 第7章 可移植性缺陷 7.2 标识符名称的限制
- 数据库系统原理与应用教程(067)—— MySQL 练习题:操作题 82-89(十一):数据的增、删、改操作
猜你喜欢

字符串复制、拼接、比较以及分割函数总结(一)

17.机器学习系统的设计

多年以后「PageHelper」又深深的给我上了一课

BCryptPasswordEncoder的使用及原理

查询表中开始日期与结束日期

ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法

分账系统二清解决方案如何助力电商平台合规经营?

ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)Solution

Tensorflow中实现正则化

Daily practice------Generate 13-digit bar, Ean-13 code rule: The thirteenth digit is the check code obtained by the calculation of the first twelve digits.
随机推荐
理解实现搜索二叉树
如何让 JOIN 跑得更快?
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
Deep Feedback Network for Recommendation
[Geek Challenge 2020] Roamphp1-Welcome
数据库系统原理与应用教程(065)—— MySQL 练习题:操作题 62-70(九):分组查询与子查询
顺通海关查验预约综合管理系统
大批程序员可能面临被劝退!
将 APACHE 日志解析到 SQL 数据库中
数据库系统原理与应用教程(066)—— MySQL 练习题:操作题 71-81(十):连接查询
Servo System of Hydraulic Steering Gear Based on Fuzzy PID
从零开始的Multi-armed Bandit
KDD 2020 | 深入浅出优势特征蒸馏在淘宝推荐中的应用
LeetCode167:有序数组两数之和
fast shell porting
C陷阱与缺陷 第6章 预处理器 6.1 不能忽视宏定义中的空格
有效的括号字符串[贪心练习]
Metaverse Web 3.0 和 DeFi大师班
Mongoose module
Web3时代重要基础设施深度拆解:4EVERLAND