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

C++でも割り切れる数の再配置


整数型の数値、たとえば数値が与えられます。タスクは、再配置後に形成された数が指定された数、つまり「数」で割り切れるような方法で、数字の数字を再配置することです。

このためのさまざまな入出力シナリオを見てみましょう-

入力 −int番号=100035

出力 −それによっても割り切れる数の再配置は次のとおりです:300105

説明 −「数値」として整数、つまり100035が与えられます。ここでのタスクは、形成された数値が100035で割り切れるように、これらの与えられた数字を再配置することです。したがって、数字を並べ替えると、数値100035で割り切れる300105が得られます。

入力 −int番号=1000035

出力 −それによっても割り切れる数の再配置は次のとおりです:3000105

説明 −'number'、つまり1000035として整数が与えられます。ここで、タスクは、形成された数が1000035で割り切れるように、これらの与えられた桁を再配置することです。したがって、桁を再配置した後、分割可能な3000105が得られます。番号1000035で。

入力 −int番号=28

出力 −それによっても割り切れる数の再配置は次のとおりです:-1

説明 −'number'として整数が与えられます。つまり28です。ここでのタスクは、形成された数が28で割り切れるように、これらの与えられた数字を再配置することです。数値28で割り切れるので、出力は-1です。

以下のプログラムで使用されているアプローチは次のとおりです

  • 整数型の変数、たとえば数値を入力し、データを関数Rearrangement(number)に渡します。

  • 関数Rearrangement(number)

    の内部
    • 整数型変数を格納するベクトル型の変数を作成します。たとえば、vec(10、0)。

    • 関数total_count(number、vec)を呼び出し、numberとvecをパラメーターとして関数に渡します。

    • ループFORをiから2まで開始し、iが10未満になるまでループ内で、tempをnumber*iに設定します。

    • 整数型変数を格納するベクトル型の変数を作成します。たとえば、vec_2(10、0)。

    • 関数total_count(number、vec_2)を呼び出し、numberとvec_2をパラメーターとして関数に渡します。

    • IF equal(vec.begin()、vec.end()、vec_2.begin())を確認してから、tempを返します。それ以外の場合は、-1を返します。

  • 関数total_count(int number、vector &vec_3)

    • 番号が1のときにループを開始します。ループ内で、vec_3をvec_3 [number%10] ++として設定し、numberをnumber/10に設定します。

#include<bits/stdc++.h>
using namespace std;
void total_count(int number, vector<int> &vec_3){
   while(number){
      vec_3[number % 10]++;
      number = number / 10;
   }
}
int Rearrangement(int number){
   vector<int> vec(10, 0);
   total_count(number, vec);
   for(int i = 2; i < 10; i++){
      int temp = number * i;
      vector<int> vec_2(10, 0);
      total_count(temp, vec_2);
      if(equal(vec.begin(), vec.end(), vec_2.begin())){
         return temp;
      }
   }
   return -1;
}
int main(){
   int number = 100035;
   cout<<"Rearrangement of a number which is also divisible by it is: "<<Rearrangement(number);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます

Rearrangement of a number which is also divisible by it is: 300105

  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++のCHAR_BIT

    CHAR_BITは、charのビット数です。これは、C++言語の「limits.h」ヘッダーファイルで宣言されています。 1バイトあたり8ビットです。 これがC++言語のCHAR_BITの例です 例 #include <bits/stdc++.h> using namespace std; int main() {    int x = 28;    int a = CHAR_BIT*sizeof(x);    stack<bool> s;    cout << "T