Viết chương trình nhập vào một dãy các phân số. Sắp xếp theo thứ tự tăng dần và in ra các phân số trên n dòng. Dữ liệu: Dòng đầu tiên ghi số nguyên dương n(0≤n≤105) n dòng kế tiếp mỗi dòng ghi hai số nguyên pi và qi mô tả phân số thứ i Kết quả: In ra n dòng, mỗi dòng là hai số nguyên mô tả phân số ở dạng tối giản được sắp theo thứ tự tăng dần C++ nha

2 câu trả lời

#include <bits/stdc++.h>

using namespace std;

int main()
{
   int n,b,c;
   int M;
   cin>>n>>b>>c;
   if(n>b)
   {
       M=n;
       n=b;
       b=M;
   }if(b>c)
   {
       M=b;
       b=c;
       c=M;
   }if(n>b)
   {
       M=n;
       n=b;
       b=M;
   }

 cout<<n<<" "<<b<<" "<<c<<endl;
    return 0;
}

#include <iostream>
#include <utility>
#include <algorithm>
using namespace std;

typedef pair<int, int> pii;

bool operator < (pii a, pii b) {
    return double(a.first) / a.second < double(b.first) / b.second;
}

pii a[100005];
int n;

int main() {
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> a[i].first >> a[i].second;
        auto tmp = __gcd(a[i].first, a[i].second);
        a[i].first /= tmp;
        a[i].second /= tmp;
    }
    
    sort(a, a + n);
    for (int i = 0; i < n; ++i) cout << a[i].first << " " << a[i].second << '\n';
}