洛谷P1482 Cantor表(升级版)

题目链接

题目描述
现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的:

1/1 1/2 1/3 1/4 1/5 …

2/1 2/2 2/3 2/4 …

3/1 3/2 3/3 …

4/1 4/2 …

5/1 …

… 这次与NOIp1999第一题不同的是:这次需输入两个分数(不一定是最简分数),算出这两个分数的积(注意该约分的要约分)后输出积在原表的第几列第几行(若积是整数或1/积,则以“积/1”或“1/积”结算)。

输入格式
共两行。每行输入一个分数(不一定是最简分数)。

输出格式
两个整数,表示输入的两个分数的积在表中的第几列第几行,注意该约分的要约分。

输入输出样例
输入 #1
4/5
5/4
输出 #1
1 1
说明/提示
所有数据:两个分数的分母和分子均小于10000

代码:

#include
int main()
{
     
	int a, b, c, d, e, f, min;
	scanf("%d/%d%d/%d", &a, &b, &c, &d);
	e = a * c;
	f = b * d;
	e < f ? min = e : min = f;
	for(int i = 2; i < min; i++)
		if(e % i == 0 && f % i == 0)
		{
     
			e /= i;
			f /= i;
			i--;
		}
	printf("%d %d", f, e);
	return 0;
}

你可能感兴趣的:(算法入门,数论,数学,模拟,洛谷,Cantor表)