3 tháng trước

Cách giải = C/C++, có gì ko hiểu thì cứ hỏi dù sao mình cũng ko trả lời vì bận ngủ

include <stdio.h>

int gcd(int a, int b) {

if (b == 0)
    return a;
return gcd(b, a % b);

}

int main() {

int M, N, k;

scanf("%d %d %d", &M, &N, &k);

int gcd_kq = gcd(M, N);
int dem = 0;
int ketqua;

for (int i = gcd_kq; i >= 1; i--)
{
    if (gcd(M, N) % i == 0)
    {
        dem++;
        if (dem == k)
        {
            ketqua = i;
            break;
        }
    }
}

printf("%d" ,ketqua);
return 0;

}

Trả lời 0 Phản hồi
9 tháng trước

Hướng dẫn

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

Trả lời 0 Phản hồi
H
9 tháng trước

C/C++ tại sao kết quả sai giúp minh với :((

include

using namespace std;

int main(){ int m, n; cin >> m >> n; int k = 1; for (int i = 1; i <= min(m, n); i++){ if (m % i == 0 && n % i == 0){ k = i; } } cout << "Uoc so chung lon nhat cua " << m << " va " << n << " la: " << k << endl; return 0; }

Trả lời 1 Phản hồi
N
1 năm trước

Help me

Giúp em bài này với ạ

Trả lời 1 Phản hồi

Bạn cần đăng nhập để tham gia thảo luận

Đăng nhập ngay