Computer >> Máy Tính >  >> Lập trình >> C ++

Thêm N chữ số vào A sao cho sau mỗi phép cộng chia hết cho B?

Cho trước a, b và n. Và chúng ta phải xem xét các điều kiện sau và tìm giải pháp tối ưu để thêm n chữ số vào a sao cho nó chia hết cho b sau mỗi lần lặp.

  • Thêm một chữ số vào a trong a như vậy theo cách mà sau khi thêm nó, a chia hết cho b .

  • In giá trị nhỏ nhất của a có thể sau n lần lặp lại của bước 1.

  • In không thành công nếu hoạt động không thành công.

kiểm tra tính chia hết sau mỗi phép cộng chữ số.

Đầu vào

a=5 b=4 n=4

Đầu ra

52000

Giải thích

Chữ số đầu tiên được thêm từ 0 đến 9 , nếu không có chữ số nào tạo thành a chia hết cho b thì câu trả lời là -1 có nghĩa là nếu n các chữ số được thêm vào a . a không bao giờ chia hết cho b . nếu không, hãy thêm chữ số đầu tiên thỏa mãn điều kiện rồi thêm 0 sau đó (n-1) lần vì nếu a chia hết cho b sau đó đến a * 10, a * 100, … Cũng sẽ chia hết cho b .

Ví dụ

#include <iostream>
using namespace std;
int main() {
   int a = 5, b = 4, n = 4;
   int num = a;
   for (int i = 0; i <= 9; i++) {
      int temp = a * 10 + i;
      if (temp % b == 0) {
         a = temp;
         break;
      }
   }
   if (num == a) {
      a = -1;
   }
   for (int j = 0; j < n - 1; j++) {
      a *= 10;
   }
   if(a>-1) {
      cout <<a;
   } else {
      cout <<”fail”;
   }
   return 0;
}