您的位置:首页 > 其它

hdu 5912 Fraction(除法迭代)

2016-10-07 15:31 351 查看
点击打开链接

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
const int M=1e3+20;
typedef long long ll;
int a[M],b[M];
int gcd(int a,int b)
{
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
int main()
{
int t;
cin>>t;

// b[i]/(a[i]+x/y)
//先通分 除法有精度,在移分母
//新的分子分母 y=a[i]*y+x ,x=b[i]*y
for(int cas=1;cas<=t;cas++)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
cin>>b[i];
int x=b
,y=a
;//分子分母
for(int i=n-1;i>=1;i--)
{
x+=y*a[i];//通分
int tmp=y;
y=x;
x=b[i]*tmp;
// b[i]/(a[i]+x/y)
//先通分 除法有精度,在移分母
//新的分母分子 y=a[i]*y+x ,x=b[i]*y
}
int d=gcd(x,y);
x/=d;
y/=d;
printf("Case #%d: %d %d\n",cas,x,y);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: