L1-009 N个数求和 (20分)

题目

/*笔记
、*pta貌似不认识scanf_s 我吐了visual不认识scanf我能说啥
怎么硕呢 这种分母分子小崽子题老烦人了
首先 gcd函数必然要用的,longlong也搞上 这个函数的理解就是辗转相除法自己找个三位数
除以两位数感觉一下即可也不用理解太深 我就是背了就完了
其次 数据分析 ab先在第一个输入并化简一下,为什么呢?这是为了搞个“基数”,
数据分析,用t表示ab的最大公约数 然后化简即可后面也是
在while循环里的数据分析1.输入cd 2.搞到其分母的最大公约数 3.分子也安排楼 化简新分式

输出也得说一下 首先a && a / b == 0 a不等于零 并且a小于b 直接输出a/b
其次a % b == 0 a等于零或者是能整除的情况 输出一个数
第三 剩下的情况就是a也不能整除b 同时a》b 这是最广泛的情况 输出假分数即可
*/


#include<stdio.h>
//#include<iostream>
//using namespace std;
typedef long long ll;
ll gcd(ll a, ll b) {
    return b == 0 ? a : gcd(b, a % b);
}
int main()
{
    ll n;
    ll lcp, a, b, c, d;
    ll i = 1;
    scanf("%d", &n);
    scanf("%lld/%lld", &a, &b);
    ll t = gcd(a, b);
    if (a) {
        a /= t;
        b /= t;
    }
    while (i < n) {
        scanf("%lld/%lld", &c, &d);
        lcp = b / gcd(b, d) * d;
        a = a * lcp / b + c * lcp / d;
        b = lcp;
        ll t = gcd(a, b);
        if (t) {
            a /= t;
            b /= t;
        }
        i++;
    }
    if (a && a / b == 0)
        printf("%lld/%lld", a % b, b);
    else if (a % b == 0)
        printf("%lld\n", a / b);
    else
        printf("%lld %lld/%lld\n", a / b, a % b, b);
    return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值