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

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

Ở đây, chúng ta sẽ xem cách tạo một số A bằng cách thêm N chữ số với nó, và trong khi thêm các chữ số mới trong mỗi giai đoạn, nó sẽ chia hết cho một số khác B. Hãy xem chúng ta sẽ tạo một số có 5 chữ số bằng cách thêm 4. các chữ số phụ với nó. Chúng ta sẽ kiểm tra tính chia hết cho 7. Số sẽ bắt đầu từ 8. Vì vậy, lúc đầu nó sẽ thêm 4 với nó, vì vậy số sẽ là 84, đó là chia hết cho 7. Sau đó thêm 0 với số đó sẽ vẫn chia hết cho 7. Nếu không thể tạo số, nó sẽ trả về -1.

Thuật toán

addNDigits (a, b, n)

begin
   num := a
   for all number x from 0 to 9, do
      temp := a * 10 + x
      if temp mod b is 0, then
         a := temp
         break
      end if
   done
   if num = a, then
      return -1
   end if
   add remaining 0’s with a
   return a.
end

Ví dụ

#include<iostream>
using namespace std;
int add_n_digits(int a, int b, int n) {
   int num = a;
   for (int i = 0; i <= 9; i++) { //test by adding all digits (0-9)
      int tmp = a * 10 + i;
      if (tmp % b == 0) {
         a = tmp; //update a after adding
         break;
      }
   }
   if (num == a) //if no digit is added, return -1
      return -1;
   for (int j = 0; j < n - 1; j++) //after getting divisible number, add 0s
      a *= 10;
   return a;
}
main() {
   int a, b, n;
   cout << "Enter A, B and N: ";
   cin >> a >> b >> n;
   int res = add_n_digits(a, b, n);
   if(res == -1) {
      cout << "Unable to get this type of number";
   } else {
      cout << "Result is " << res;
   }
}

Đầu ra

Enter A, B and N: 8 7 4
Result is 84000

Đầu ra

Enter A, B and N: 10 11 5
Unable to get this type of number