C++で数値を3で割り切れる数にするために削除する桁数
文字列で数字が与えられます。 3で割り切れるには、削除する必要のある桁数を見つける必要があります。
最大2桁を削除することで、数値を除算できます。したがって、3で割り切れる数を削除する最大桁数は2です。
いくつかの例を見てみましょう。
入力
92
出力
1
2を削除して、3で割り切れるようにすることができます。
入力
999
出力
0
与えられた数自体は3で割り切れる。
アルゴリズム
-
文字列で数値を初期化します。
-
数の合計を求めます。
-
合計が3で割り切れる場合は、0を返します。
-
合計が3で割り切れず、数値の長さが1の場合、3で割り切れることはできません。 -1を返します。 。
-
番号を繰り返します。
-
数値から1桁を削除し、除算性を確認します。
-
上記の条件が満たされている場合は、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
-
C++で多数が20で割り切れるかどうかを確認します
ここでは、数値が20で割り切れるかどうかを確認する方法を説明します。この場合、その数は非常に多い数です。したがって、数値を文字列として入力します。 数値は20で割り切れますが、それが10で割り切れると、10で割った後、残りの数値は2で割り切れます。したがって、ケースは単純です。最後の桁が0の場合は10で割り切れ、10で割り切れる場合は、最後から2番目の要素が2で割り切れ、数値は20で割り切れます。 例 #include <bits/stdc++.h> using namespace std; bool isDiv20(string num){ int n
-
C ++で追加するたびにBで割り切れるように、AにN桁を追加しますか?
ここでは、N桁を追加して数値Aを生成する方法を説明します。各段階で新しい桁を追加すると、別の数値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