Bài toán cộng phân số C++

Các tiền bối cho em hỏi với! Code của em mắc chỗ nào mà lại ko đc max test ạ?
Code của bạn em (phía dưới phần cmt) em thấy rất đơn giản mà lại đc max test luôn :frowning:

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const LL MAXN = 1 + 1e5;
int GCD(int a, int b){
    while (b!=0) {
        int i=a%b;
        a=b;
        b=i;
    }
    return a;
}
int LCM(int m, int n) {
    return m*n/GCD(m,n);
}
int a,b,c,d,tu,mau,k;
int main() {
    #define TASK "ABC"
    freopen(TASK".inp","r",stdin);
    freopen(TASK".out","w",stdout);
    cin >>a>>b>>c>>d;
    mau=LCM(b,d);
    tu=a*mau/b+c*mau/d;
    k=GCD(tu,mau);
    cout <<tu/k<<" "<<mau/k;
    return 0;
}

#include <bits/stdc++.h>;
using namespace std;
 typedef long long LL;
 const int MAXN=1+1e5;
 LL ucln(LL x,LL y){
 while(y!=0){
 LL i=x%y;
 x=y;
 y=i;}
return x;}

 int main() {
     #define TASK "fracsum"
     freopen(TASK".inp","r",stdin);
     freopen(TASK".out","w",stdout);
     LL a,b,c,d,x,y;
	cin>>a>>b>>c>>d;
    x=a*d+b*c;
    y=b*d;
    cout<<x/ucln(x,y)<<' '<<y/ucln(x,y)<<endl;


     return 0;
}

Bạn dùng 3 dấu ```để bọc code nhé :slight_smile:

3 dấu đó, xuống dòng, phần code, xuống dòng, rồi mới 3 dấu.

m*n là tràn kết quả rồi bạn. Thực ra cả hai đoạn đều chưa hay lắm.

1 Like

thế viết như này


m*(n/gcd(m,n)) 

có hơn đc tí nào ko ạ?

Vậy mới ổn đó bạn. (sr)

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?