在 C++ 中,如何向數字 A 新增 N 位數字,使得每次新增後 A 都能被 B 整除?
在這裡,我們將瞭解如何透過向數字 A 新增 N 位數字來生成一個新的數字,並且在每個階段新增新數字時,它都將能夠被另一個數字 B 整除。讓我們考慮一下,我們要透過向一個數字新增 4 個額外數字來生成一個 5 位數。我們將檢查它是否能被 7 整除。該數字將從 8 開始。所以首先,我們將 4 附加到它後面,所以數字將變成 84,它可以被 7 整除。然後向數字新增 0,這樣它仍然可以被 7 整除。如果無法生成該數字,則返回 -1。
演算法
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
示例
#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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP