C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

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

  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

  2. 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