Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm số N chữ số lớn nhất chia hết cho ba số cho trước trong C++

Trong hướng dẫn này, chúng ta sẽ viết một chương trình tìm số N chữ số lớn nhất chia hết cho ba số cho trước.

Các bước giải quyết

  • Khởi tạo ba số cùng với N.
  • Tìm BCNN (LCM) của ba số.
  • Lưu số lớn nhất có N chữ số.
  • Nếu số lớn nhất chia hết cho BCNN thì trả về nó.
  • Ngược lại, trừ phần dư từ số lớn nhất để tìm kết quả.

Ví dụ

Dưới đây là mã nguồn C++:

#include <bits/stdc++.h> 
using namespace std; 

int LCM(int x, int y, int z) { 
    int ans = ((x * y) / (__gcd(x, y))); 
    return ((z * ans) / (__gcd(ans, z))); 
} 

int findNumber(int n, int x, int y, int z) { 
    int lcm = LCM(x, y, z); 
    int largestNDigitNumber = pow(10, n) - 1; 
    int remainder = largestNDigitNumber % lcm; 
    if (remainder == 0) { 
        return largestNDigitNumber; 
    } 
    largestNDigitNumber -= remainder; 
    if (largestNDigitNumber >= pow(10, n - 1)) { 
        return largestNDigitNumber; 
    } 
    return 0; 
} 

int main() { 
    int n = 4, x = 6, y = 7, z = 8; 
    int result = findNumber(n, x, y, z); 
    if (result != 0) { 
        cout << result << endl; 
    } else { 
        cout << "Not possible" << endl; 
    } 
    return 0; 
}

Kết quả

Nếu bạn chạy mã trên, kết quả sẽ là:

9912

Kết luận

Nếu bạn có bất kỳ thắc mắc nào về hướng dẫn này, hãy để lại bình luận bên dưới.