题目链接
http://acm.hdu.edu.cn/showproblem.php?pid=5912
代码
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#define ll long long
#define DEBUG printf
using namespace std;
ll GCD(ll aa,ll bb)
{
ll i,t;
if(aa<bb){
t=aa;
aa=bb;
bb=t;
}
while(aa%bb!=0){
i=aa%bb;
if(bb>i){
aa=bb;
bb=i;
}
else aa=i;
}
return bb;
}
void solve(ll &mu,ll &zi,int *a,int *b,int n){
for(int i=n-1;i>=1;i--){
ll tmp_mu=mu,tmp_zi=zi;
mu=tmp_zi+tmp_mu*a[i];
zi=tmp_mu*b[i];
ll yueshu=GCD(mu,zi);
mu/=yueshu;
zi/=yueshu;
//DEBUG("%d:%lld/%lld\n",i,zi,mu);
}
}
int main()
{
int t;
scanf("%d",&t);
for(int tt=1;tt<=t;tt++){
int a[11],b[11],n;
scanf("%d",&n);
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++){
scanf("%d",&b[i]);
}
ll mu=a[n],zi=b[n];
solve(mu,zi,a,b,n);
int yueshu = GCD(mu,zi);
mu/=yueshu;
zi/=yueshu;
printf("Case #%d: %lld %lld\n",tt,zi,mu);
}
return 0;
}
/*
1
8
1 2 3 4 5 6 7 8
9 8 7 6 5 4 3 2
*/