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