hdu5912Fraction(2016ccpc长春1002)

本文分享了一个关于分数运算处理的问题及解决思路。作者最初遇到了运行错误(WA),在反复测试后发现,当分子分母只有一个数值时,原先的处理逻辑存在缺陷。通过调整初始化值并优化迭代过程,最终解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这题其实很水,但是我做了好久都一直是WA,怎么测大数据都对,后来发现了一件事,这题我在处理的时候是一次性处理两步的那种,也就是当分子分母只有一个数的时候,是没有算的,之前一直没有想到,真是烦死了,还是水平太菜了,哎,得加强努力啊

#include <iostream>
#include <string.h>
using namespace std;
int T;
long long a[20],b[20];
int n;
long long gcd(long long x,long long y)
{
    return y?gcd(y,x%y):x;
}
int main()
{
    ios::sync_with_stdio(false);
    int cases=1;
    cin>>T;
    while(T--)
    {
        cin>>n;
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        for(int i=1; i<=n; i++)
            cin>>a[i];
        for(int i=1; i<=n; i++)
            cin>>b[i];
        long long nn=n;
        long long fz=b[nn];
        long long fm=a[nn];
        long long fz2=fz,fm2=fm;//这块原来赋成1,当分子分母都只有一个的时候,就只能根据这个算了,所以不能赋成1
        for(int i=nn-1; i>=1; i--)
        {
            fz2=b[i]*fm;
            fm2=fm*a[i]+fz;
            long long chu=gcd(fz2,fm2);
            fz=fz2/chu;
            fm=fm2/chu;
        }
       long long g=gcd(fz2,fm2);
        fz=fz2/g;
        fm=fm2/g;
        cout<<"Case #"<<cases++<<": ";
        cout<<fz<<" "<<fm<<endl;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值