01/10/2018, 17:30

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

#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 viết 19:45 ngày 01/10/2018
#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 viết 19:31 ngày 01/10/2018

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

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

return m*n/GCD(m,n);

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 viết 19:31 ngày 01/10/2018

thế viết như này


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

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

Bài liên quan
0