hdu 1713

注解:这道题就是变式求两个分数的最小公倍数。这里给出求分数的最小公倍数的方法:两个分数的分子的最小公倍数除以两份分数的分母的最大公因数。嗯,例:m1/m1,n1/n2,即这两个分母的最小公倍数为m1,n1的最小公倍数除以m2,n2的最大公因数。求最大公因数的方法:辗转相除法。最小公倍数 = 两个数的积/最大公因数:辗转相除法

代码如下:

#include<iostream>
#include<algorithm>
#include<cmath>

using namespace std;

typedef long long ll;

ll fun(ll x1, ll x2)
{
	ll tmp;

	if (x1 < x2)
	{
		tmp = x1;
		x1 = x2;
		x2 = tmp;
	}
	while (x2)
	{
		tmp = x1 % x2;
		x1 = x2;
		x2 = tmp;
	}
	return x1;
}

int main()
{
	int t;
	ll m1, m2, n1, n2, ans1, ans2,tmp;
	char c1, c2;

	cin >> t;
	while (t--)
	{
		cin >> m1 >> c1 >> m2 >> n1 >> c2 >> n2;
		tmp = fun(m1, m2);
			m1 /= tmp;
			m2 /= tmp;
		tmp = fun(n1, n2);
			n1 /= tmp;
			n2 /= tmp;
		tmp = fun(m1, n1);
		ans1 = m1 / tmp * n1;
		ans2 = fun(m2, n2);
		tmp = fun(ans1, ans2);
		ans1 /= tmp;
		ans2 /= tmp;
		if (ans2 == 1)
			cout << ans1 << endl;
		else
			cout << ans1 << "/" << ans2 << endl;
	}

	return 0;
}

阅读更多
个人分类: 跟着理工大版上acm
想对作者说点什么? 我来说一句

研华数据采集卡PCI 1713

2013年04月25日 881KB 下载

没有更多推荐了,返回首页

不良信息举报

hdu 1713

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭