比赛 202110省实验桐柏一中普及组联赛 评测结果 AAAAAAAAAA
题目名称 分数运算 最终得分 100
用户昵称 该账号已注销 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2021-10-18 19:32:59
显示代码纯文本
#include<bits/stdc++.h>
typedef __int128 ll;
using namespace std;
int n,m;
ll ans1=0,ans2=0;
ll read()
{
    string c;
    ll x=0;
    cin>>c;
    int p=c.length(),cnt=0;
    while(cnt!=p)
    {
        x=x*10;
        x=x+(c[cnt]-'0');
        cnt++;
    }
    return x;
}
int print(ll x)
{
    if(x>9){
        print(x/10);}
    cout<<char(x%10+'0');
}
ll gcd(ll x,ll y)
{
    if(y==0)
    return x;
    gcd(y,x%y);
}
ll lcm(ll x,ll y)
{
    return x/gcd(x,y)*y;
}
int main(){
    freopen("fenshu.in","r",stdin);
    freopen("fenshu.out","w",stdout);
    cin>>n>>m;
    ans1=read();ans2=read();
    ll p=gcd(ans1,ans2);
    ans1/=p;
    ans2/=p;
    for(int i=1;i<=n-1;i++)
    {
        ll a,b,p;
        a=read();b=read();
        ans1*=(lcm(ans2,b)/ans2);
        a*=(lcm(ans2,b)/b);
        ans1+=a;
        ans2=lcm(ans2,b);
        p=gcd(ans1,ans2);
        ans1/=p;
        ans2/=p;
    }
    
    for(int i=1;i<=m;i++)
    {
        ll a;
        a=read();
        ans2*=a;
    }
    p=gcd(ans1,ans2);
    ans1/=p;
    ans2/=p;
    if(ans1==1&&ans2==1)
    {
        cout<<1<<endl;
        return 0;
    }
    print(ans1);
    cout<<' ';
    print(ans2);
    cout<<endl;
    return 0;
}