Cho a, b và n. Cần thêm n chữ số vào a sao cho sau mỗi lần thêm, số mới tạo ra chia hết cho b. Tìm giá trị nhỏ nhất của a sau n lần lặp, hoặc in "fail" nếu không thể.
Điều kiện
- Thêm một chữ số (0-9) vào a sao cho a mới chia hết cho b.
- In giá trị nhỏ nhất của a sau n lần lặp.
- In "fail" nếu không tìm được chữ số phù hợp.
Ví dụ
Input: a=5, b=4, n=4 Output: 52000
Giải thích
Tìm chữ số đầu tiên (0-9) sao cho a*10 + chữ_số chia hết cho b. Nếu không có chữ số nào → trả về -1. Nếu tìm thấy, thêm chữ số đó, sau đó thêm (n-1) chữ số 0 vì nếu a chia hết cho b thì a*10, a*100... cũng chia hết cho b.
Code ví dụ
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 4, n = 4;
int original = a;
// Tìm chữ số đầu tiên
for (int i = 0; i <= 9; i++) {
int temp = a * 10 + i;
if (temp % b == 0) {
a = temp;
break;
}
}
// Nếu không tìm thấy chữ số nào
if (original == a) {
a = -1;
}
// Thêm (n-1) chữ số 0
for (int j = 0; j < n - 1; j++) {
a *= 10;
}
if (a > -1)
cout << a;
else
cout << "fail";
return 0;
}
Kết quả
52000
Giải thích: 52 chia hết cho 4, sau đó thêm 3 chữ số 0 → 52000.