Des丨tiny丶柠凉

蓦然回首,前尘不堪流连,自卿离去,暗淡了这俗世繁华,只余孤影几度徘徊,独酌月下,对影成殇;

时间留不住记忆的海,不过是黯然神伤,默默着无奈。


铺瓷砖

题目描述

有一面很长很长的墙。 你需要在这面墙上贴上两行瓷砖。 你的手头有两种不同尺寸的瓷砖, 你希望用这两种瓷砖各贴一行。瓷砖的长可以用分数表示,贴在第一行的每块瓷砖长度为A/B,贴在第二行的每块瓷砖长度为C/D。 本问题中你并不需要关心瓷砖的宽度。
Markdown
如上图所示, 两排瓷砖从同一起始位置开始向右排列,两排瓷砖的第一块的左端的缝隙是对齐的。 你想要知道, 最短铺多少距离后, 两排瓷砖的缝隙会再一次对齐。


输入格式

输入的第一行,输入的第 1 行包含一个正整数 T,表示测试数据的组数。

接下来 T 行, 每行 4 个正整数 A, B, C, D,表示该组测试数据中,两种瓷砖的长度分别为A/B和C/D。


输出格式

输出包含 T 行, 第 i 行包含一个分数或整数, 表示第 i 组数据的答案。 如果答案为分数,则以“ X/Y”的格式输出,不含引号。分数必须化简为最简形式。如果答案为整数,则输出一个整数 X。

赤果果的GCD,约分,放代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<queue>
#include<stack>
#include<cstdlib>
#include<bitset>
#include<cmath>
#define MAXN 10005
using namespace std;
int n,a,b,c,d,q,p,k;
int gcd(int x,int y)
{

if (!y) return x;
else return gcd(y,x%y);
}
int main ()
{

//freopen ("tile.in","r",stdin);
//freopen ("tile.out","w",stdout);
scanf ("%d",&n);
for (int i=1;i<=n;i++)
{
scanf ("%d%d%d%d",&a,&b,&c,&d);
k=gcd(a,c);
a/=k;c/=k;
q=a*c*k;
p=gcd(b,d);
k=gcd(q,p);
q/=k;p/=k;
if (p==1) printf ("%d\n",q);
else printf ("%d/%d\n",q,p);
}
return 0;
}

Markdown

最近的文章

小Y的问题

题目描述 有个孩子叫小 Y,一天,小 Y 拿到了一个包含 n 个点和 n-1 条边的无向连通图, 图中的点用 1~n 的整数编号。小 Y 突发奇想,想要数出图中有多少个“Y 字形”。 一个“Y 字形”由 5 个不同的顶点 A、 B、 C、 D、 E 以及它们之间的 4 条边组成,其中 AB、BC、 …

于 继续阅读
更早的文章

洛谷P1083借教室

题目链接题目描述 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问题。 我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租 …

于  线段树 继续阅读