比赛 |
202110省实验桐柏一中普及组联赛 |
评测结果 |
AAAAAAAAAA |
题目名称 |
分数运算 |
最终得分 |
100 |
用户昵称 |
求索 |
运行时间 |
0.000 s |
代码语言 |
C++ |
内存使用 |
0.00 MiB |
提交时间 |
2021-10-20 18:47:24 |
显示代码纯文本
#include<bits/stdc++.h>
#define int __int128
using namespace std;
int p,q;
int n,m;
int ans_z,ans_m;
int gcd(int a,int b) {
if(a<b){
swap(a,b);
}
if(a%b==0) return b;
else return gcd(b,a%b);
}
int gcd1(int a,int b){
return a*b/gcd(a,b);
}
inline int read() {
int x=0;
char ch=getchar();
while (ch>='0' && ch<='9')
{
x=x*10+ch-48;
ch=getchar();
}
return x;
}
inline void print(int x) {
if(x>9){
print(x/10);
}
putchar(x%10+'0');
}
signed main(){
freopen("fenshu.in","r",stdin);
freopen("fenshu.out","w",stdout);
n=read();
m=read();
p=read();
q=read();
ans_z=p;
ans_m=q;
for(int i=2;i<=n;i++){
p=read();
q=read();
int k=gcd1(ans_m,q);
int k1=k/ans_m;
int k2=k/q;
ans_m=k;
ans_z=k1*ans_z+k2*p;
int v=gcd(ans_m,ans_z);
ans_m/=v;
ans_z/=v;
}
for(int i=1;i<=m;i++){
p=read();
if(ans_z%p==0){
ans_z=ans_z/p;
continue;
}
ans_m*=p;
}
int v=gcd(ans_m,ans_z);
ans_m/=v;
ans_z/=v;
if(ans_m==1){
print(ans_z);
return 0;
}
print(ans_z);
printf(" ");
print(ans_m);
return 0;
}