在 C++ 中移除多少位數字才能使一個數字能被 3 整除
給定一個字串形式的數字,你需要找到需要移除多少位數字才能使其能被 3 整除。
我們最多移除兩位數字來使數字能被 3 整除。因此,最多需要移除的數字位數是 2。
讓我們看一些例子。
輸入
92
輸出
1
我們可以移除 2 使其能被 3 整除。
輸入
999
輸出
0
給定的數字本身就能被 3 整除。
演算法
初始化字串形式的數字。
找到數字的和。
如果和能被 3 整除,則返回 0。
如果和不能被 3 整除,並且數字的長度為 1,則我們無法使其能被 3 整除。返回 -1。
迭代數字。
從數字中移除一位數字並檢查其是否能被 3 整除。
如果上述條件滿足,則返回 1。
再次檢查數字的長度。如果長度為 2,則返回 -1。
否則返回 2。
實現
以下是上述演算法在 C++ 中的實現
#include <bits/stdc++.h> using namespace std; int getNumSum(string n) { int len = n.length(), sum = 0; for (int i = 0; i < len; i++) { sum += (int)n[i]; } return sum; } int getDigitsCount(string num) { int n = num.length(); int sum = getNumSum(num); if (sum % 3 == 0) { return 0; } if (n == 1) { return -1; } for (int i = 0; i < n; i++) { int currentDigit = num[i] - '0'; if (sum % 3 == currentDigit % 3) { return 1; } } if (n == 2) { return -1; } return 2; } int main() { string num = "7536836"; cout << getDigitsCount(num) << endl; return 0; }
輸出
如果你執行上述程式碼,你將得到以下結果。
1
廣告