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

c++

(Monitor of A2_K22_CVP) #1

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;
}


(Monitor of A2_K22_CVP) #2
#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;
}

(rogp10) #3

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.


(Monitor of A2_K22_CVP) #4

thế viết như này


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

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


(rogp10) #5

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


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