Ở đâ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