比赛 |
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;
}