比赛 202110省实验桐柏一中普及组联赛 评测结果 AATWWTTTWE
题目名称 分数运算 最终得分 20
用户昵称 OtaBoki 运行时间 4.174 s
代码语言 C++ 内存使用 3.44 MiB
提交时间 2021-10-18 20:16:26
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long zxgbs(long long a,long long b){
	for(long long i=max(a,b);i<=a*b;i++){
		if(i%a==0 && i%b==0)return i;
	}
	return 0;
}//最小公倍数 
int main(){
	freopen("fenshu.in","r",stdin);
	freopen("fenshu.out","w",stdout);
	
	bool judge;
	int m,n,tmp,sum[3][3]={};//sum[i][j]表示第i个数的分子(1)和分母 (2) 
	cin>>m>>n;
		cin>>sum[2][1]>>sum[2][2];
	for (int i=1;i<m;i++){
		cin>>sum[1][1]>>sum[1][2];
		tmp=zxgbs(sum[1][2],sum[2][2]) ;
		sum[1][1]*=(tmp/sum[1][2]);//通分 
		sum[2][1]*=(tmp/sum[2][2]);//通分
		sum[2][2]=tmp; 
		sum[2][1]+=sum[1][1];
	}
	for (int i=0;i<n;i++){
		long long k;
		cin>>k; 
		sum[2][2]*=k;
	}
	
	while(1){
		tmp=max(sum[2][1],sum[2][2]);
		judge=false; 
		for(int i=2;i<=tmp;i++){
		if(sum[2][1]%i==0 && sum[2][2]%i==0){
			sum[2][1]/=i;
			sum[2][2]/=i;
			judge=true;//此轮有因数 
		}
		}
		if(judge) continue;
		else break;
	}//约分
	
	if(sum[2][1]%sum[2][2]==0) cout<<sum[2][1]/sum[2][2];
	else cout<<sum[2][1]<<" "<<sum[2][2];
	
	
	return 0;
}