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.