noip模拟赛 铺瓷砖
2017-10-26 18:30
218 查看
【问题描述】
有一面很长很长的墙。 你需要在这面墙上贴上两行瓷砖。 你的手头有两种不同尺寸的瓷
砖, 你希望用这两种瓷砖各贴一行。瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度
为A/B贴在第二行的每块瓷砖长度为C/D.
本问题中你并不需要关心瓷砖的宽度。
如上图所示, 两排瓷砖从同一起始位置开始向右排列,两排瓷砖的第一块的左端的缝隙
是对齐的。 你想要知道, 最短铺多少距离后, 两排瓷砖的缝隙会再一次对齐。
【输入】
输入的第 1 行包含一个正整数 T,表示测试数据的组数。
接下来 T 行, 每行 4 个正整数 A, B, C, D,表示该组测试数据中,两种瓷砖的长度分别为A/B,C/D.
【输出】
输出包含 T 行, 第 i 行包含一个分数或整数, 表示第 i 组数据的答案。 如果答案为分数,
则以“X/Y”的格式输出,不含引号。分数必须化简为最简形式。如果答案为整数,则输出
一个整数 X。
【输入输出样例 1】
见选手目录下的 tile/tile1.in 与 tile/tile1.out
【输入输出样例 1 说明】
对于第一组数据,第一行瓷砖贴 2 块,第二行贴 3 块,总长度都为 1,即在距离起始位
置长度为 1 的位置两行瓷砖的缝隙会再次对齐。
对于第二组数据, 第一行瓷砖贴 5 块,第二行贴 3 块,总长度都为5/2
分析:实际上就是求最小公倍数.分数的话先通分,然后对分子求最小公倍数就可以了,注意爆int.
有一面很长很长的墙。 你需要在这面墙上贴上两行瓷砖。 你的手头有两种不同尺寸的瓷
砖, 你希望用这两种瓷砖各贴一行。瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度
为A/B贴在第二行的每块瓷砖长度为C/D.
本问题中你并不需要关心瓷砖的宽度。
如上图所示, 两排瓷砖从同一起始位置开始向右排列,两排瓷砖的第一块的左端的缝隙
是对齐的。 你想要知道, 最短铺多少距离后, 两排瓷砖的缝隙会再一次对齐。
【输入】
输入的第 1 行包含一个正整数 T,表示测试数据的组数。
接下来 T 行, 每行 4 个正整数 A, B, C, D,表示该组测试数据中,两种瓷砖的长度分别为A/B,C/D.
【输出】
输出包含 T 行, 第 i 行包含一个分数或整数, 表示第 i 组数据的答案。 如果答案为分数,
则以“X/Y”的格式输出,不含引号。分数必须化简为最简形式。如果答案为整数,则输出
一个整数 X。
【输入输出样例 1】
tile.in | tile.out |
2 1 2 1 3 1 2 5 6 | 1 5/2 |
【输入输出样例 1 说明】
对于第一组数据,第一行瓷砖贴 2 块,第二行贴 3 块,总长度都为 1,即在距离起始位
置长度为 1 的位置两行瓷砖的缝隙会再次对齐。
对于第二组数据, 第一行瓷砖贴 5 块,第二行贴 3 块,总长度都为5/2
分析:实际上就是求最小公倍数.分数的话先通分,然后对分子求最小公倍数就可以了,注意爆int.
#include <map> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long ll; ll T, a, b, c, d; ll gcd(ll a, ll b) { if (!b) return a; return gcd(b, a % b); } int main() { scanf("%lld", &T); while (T--) { scanf("%lld%lld%lld%lld", &a, &b, &c, &d); ll t, t2; t = b / gcd(b, d) * d; a *= (t / b); c *= (t / d); t2 = a / gcd(c, a) * c; if (t2 % t == 0) printf("%lld\n", t2 / t); else { ll p = gcd(t2, t); t /= p; t2 /= p; printf("%lld/%lld\n", t2, t); } } return 0; }
相关文章推荐
- 2018.01.21【NOIP普及组】模拟赛D组
- JZOJ(中山纪中)2018.01.21【NOIP普及组】模拟赛D组(第二题)
- 【jzoj】2018.1.30NOIP普及组——模拟赛D组
- JZOJ(中山纪中) 2018.02.01【NOIP普及组】模拟赛D组 第二题
- NOIP2017提高组模拟赛5 (总结)
- NOIP2017提高组模拟赛 8(总结)
- 2015.11.1 [XJOI] NOIP模拟赛总结
- 2017.07.05【NOIP提高组】模拟赛A组 灯
- NOIP模拟赛 t3 nan
- NKOJ P2376【NOIP无压力模拟赛5】蜘蛛展览
- 2017.07.14【NOIP提高组】模拟赛B组小结
- 2018.10.6 NOIP模拟赛解题报告
- [NOIP模拟赛]游戏
- 2017.08.05【NOIP提高组】模拟赛B组总结
- 【NOIP 模拟赛】Evensgn 剪树枝 树形dp
- jzoj 2016.12.31 noip模拟赛A 总结
- 2017.08.15【NOIP提高组】模拟赛B组 生日聚餐
- jzoj 2016.6.11noip模拟赛B总结
- 2017.08.18【NOIP提高组】模拟赛B组 恭介的法则(rule)
- [NOIP模拟赛]棋子游戏