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

Thêm N chữ số vào A sao cho chia hết cho B sau mỗi lần thêm

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.