Hướng dẫn

Trần Ngô Quang Huy  •  12 ngày trước


Cách 1: Lưu tất cả các ước chung của MN vào 1 mảng, ước chung lớn thứ k nằm ở vị trí k-1 (nếu mảng giảm dần) hoặc n-k+1 (nếu mảng tăng dần) với n là số lượng ước chung của MN

Code tham khảo cho cách 1:

#include<bits/stdc++.h>
using namespace std ;
int main(){
    int m, n, k, d ; cin >> m >> n >> k ;
    int a[100];
    int b = 0 ;
    d = max(m, n);
    for(int i = 1; i <= d; i++ )
        if(( n % i == 0 ) && ( m % i == 0 )){
            b++; a[b] = i ;
        }
    cout << a [ b - k + 1 ];
}

Cách 2: Duyệt i từ min(M,N) xuống 1, nếu i là ước chung của MN thì giảm k, đáp án là ước chung của MN khi k=0


Bình luận: