比赛 202110省实验桐柏一中普及组联赛 评测结果 AAAAAAAAAW
题目名称 分数运算 最终得分 90
用户昵称 yh 运行时间 0.003 s
代码语言 C++ 内存使用 0.57 MiB
提交时间 2021-10-20 20:23:34
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
unsigned long long a[150],b[150],c[150],n,m;//a,b数组为分子,分母,c数组为整数 
int le(int x,int y)
{
	if(x==0)return 0;
	if(b[x]==b[y])
	{
		a[y]+=a[x];
		return 0;
	}
	else
	{	
	    a[x]*=b[y];
		b[y]*=b[x];
		a[y]*=b[x];
		a[y]+=a[x];
		unsigned long long b2=b[y];
		for(int i=b2;i>=1;i--)
		{
			if(a[y]%i==0&&b[y]%i==0)
			{
				a[y]/=i;
				b[y]/=i;
				break;
			}
		}
	}
	return 0;
}
int main()
{
	freopen("fenshu.in","r",stdin);
	freopen("fenshu.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i]>>b[i];
		le(i-1,i);
	}
	for(int i=1;i<=m;i++)
	{
		cin>>c[i];
		b[n]*=c[i];
	}
	unsigned long long a1=a[n]; 
	for(int i=2;i<=sqrt(a1);i++)
	{
		while(a[n]%i==0&&b[n]%i==0)
		{
			a[n]/=i;
			b[n]/=i;
		}
	}
	if(a[n]%b[n]==0)
	{
		cout<<a[n]/b[n];
	}
	else cout<<a[n]<<" "<<b[n];
	return 0;
}