여기서 우리는 N 자리를 더하여 숫자 A를 생성하는 방법을 볼 것이며, 각 단계에서 새 숫자를 추가하는 동안 다른 숫자 B로 나눌 수 있습니다. 4를 더하여 5자리 숫자를 만들 것이라고 생각합시다. 추가 숫자. 우리는 7로 나눌 수 있는지 확인할 것입니다. 숫자는 8부터 시작합니다. 따라서 처음에는 4를 추가하므로 숫자는 84가 되며, 이는 7로 나눌 수 있습니다. 그런 다음 숫자에 0을 더하여 다음으로 나눌 수 있습니다. 7. 번호를 생성할 수 없으면 -1을 반환합니다.
알고리즘
NDigits(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
예시
#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; } }
출력
Enter A, B and N: 8 7 4 Result is 84000
출력
Enter A, B and N: 10 11 5 Unable to get this type of number