比赛 |
202110省实验桐柏一中普及组联赛 |
评测结果 |
AAAAAAAAAW |
题目名称 |
分数运算 |
最终得分 |
90 |
用户昵称 |
YAGE |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2021-10-18 19:14:01 |
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
#define int unsigned long long
int n,m,a[105][2],b[65],ans[2]={0,1};
inline int read(){
int w=0;
char c=getchar();
while(c<='9'&&c>='0'){
w=(w<<3)+(w<<1)+(c^48);
c=getchar();
}return w;
}
int gcd(int a,int b){
int aa=b;
int bb=a%b;
return bb==0?aa:gcd(aa,bb);
}
void add(int a,int a1,int b,int b1){
int a11=a1*b1;
a*=b1;b*=a1;
a+=b;
int num=gcd(a,a11);
a/=num;a1=a11/num;
ans[0]=a;ans[1]=a1;
}
void sq(int _a,int a1,int _b){
if(_a%_b==0)_a/=_b;
else a1*=_b;
int num=gcd(_a,a1);
_a/=num;a1=a1/num;
ans[0]=_a;
ans[1]=a1;
}
signed main(){
freopen("fenshu.in","r",stdin);
freopen("fenshu.out","w",stdout);
n=read();m=read();
for(int i=1;i<=n;i++){
a[i][0]=read();a[i][1]=read();
}for(int i=1;i<=m;i++){
b[i]=read();
}
for(int i=1;i<=n;i++){
add(ans[0],ans[1],a[i][0],a[i][1]);
}
for(int i=1;i<=m;i++){
sq(ans[0],ans[1],b[i]);
}
if(ans[0]%ans[1]==0) cout<<ans[0]/ans[1];
else cout<<ans[0]<<" "<<ans[1];
return 0;
}