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

C++で4で割り切れる回転をカウントします


たくさん与えられます。目標は、4で割り切れるnumの回転をカウントすることです。

回転は何度も行うことができないので。 4で割り切れるプロパティを使用します。最後の2桁が4で割り切れる場合、数値は4で割り切れます。数値が1234の場合、回転は1234、4123、3412、2341になり、最後の2桁の12は4で割り切れます。 4で割り切れる。

例を挙げて理解しましょう。

入力 − num =15324

出力 −4で割り切れる回転数は次のとおりです。2

説明 −回転は−

15324, 41532, 24153, 32415, 53241

これらのうち、15324と41532は4で割り切れるでしょう。

入力 − num =848484

出力 − 4で割り切れる回転数は− 6

説明 −回転は−

848484, 484848, 848484, 484848, 848484, 484848

これらの回転はすべて4で割り切れます

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

数値を文字列に変換し、forループを使用して数値をトラバースします。 2桁のペアごとに、それらを整数に変換し、除算を4でチェックします。除算できる場合は、カウントをインクリメントします。

  • 長い数字と同じくらいの数を取ります。

  • 関数Rotation_4(long long num)は、数値numを受け取り、4で割り切れるnumの回転数を返します。

  • numを文字列str=to_string(num)に変換します。

  • numの桁数はlength=str.length()になります。

  • 数字のペアの整数値を格納するために一時変数digit=0を取ります。

  • 初期カウントを0とします。

  • 長さが1の場合、1桁のみが存在します。整数に変換します。digit=(str.at(0)-’0’)

  • 4で除算可能性を確認し、結果を1または0として返します。

  • 次に、forループを使用してstrをi=0からI

  • 各ペアが回転の最後の2桁になるため、digit =(str.at(i)-'0')* 10 +(str.at(i + 1)-' 0')を使用して2桁の数字を作成します。

  • Digit =(str.at(length-1)-'0')* 10 +(str.at(0)-' 0');を使用して、最後の桁と最初の桁で形成されるペアに対して上記と同じプロセスを実行します。 4で除算可能性を確認し、カウントを更新します。

  • 結果として最終的にはカウントを返します。

#include <bits/stdc++.h>
using namespace std;
int Rotation_4(long long num){
   string str = to_string(num);
   int length = str.length();
   int digit = 0, count = 0;
   if (length == 1){
      digit=(str.at(0)-'0');
      if(digit%4 == 0){
         return 1;
      }
      else{
         return 0;
      }
   }
   for (int i=0; i<(length-1); i++){
      digit = (str.at(i)-'0')*10 + (str.at(i+1)-'0');
      if(digit%4 == 0){
         count++;
      }
   }
   digit = (str.at(length-1)-'0')*10 + (str.at(0)-'0');
   if(digit%4 == 0){
      count++;
   }
   return count;
}
int main(){
   long long num = 24040;
   cout<<"Count of rotations divisible by 4 are: "<<Rotation_4(num);
   return 0;
}

出力

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

Count of rotations divisible by 4 are: 4

  1. C++で8で割り切れる回転をカウントします

    たくさん与えられます。目標は、8で割り切れるnumの回転をカウントすることです。 回転は何度も行うことができないので。 8で割り切れるプロパティを使用します。最後の3桁が8で割り切れる場合、数値は8で割り切れます。数値が1800の場合、回転は1800、0180、0018、1800のうち8001は8で割り切れます。 例を挙げて理解しましょう。 入力 − num =15320 出力 −4で割り切れる回転数は次のとおりです。1 説明 −回転は− 15320, 01532, 20153, 32015, 53201 Out of these, only 15320 is divisible

  2. C++でソートおよびローテーションされたリンクリストのローテーションをカウントします

    リンクリストが表示されます。リストは最初にソートされ、次にK個のノードでローテーションされます。目標は、Kの値を見つけることです。K個のノードだけ回転する入力としてリンクリストを以下に示す場合- それならオリジナルは-だったに違いない ここでKは2であることがわかります。入力リンクリストは、元のソートされたリンクリストの2ノードのローテーションです。 例を挙げて理解しましょう。 入力 −リスト:5→7→9→1→3 出力 リンクリストの要素は次のとおりです。5791 3 ソートおよびローテーションされたリンクリストのローテーション数は-3 説明 −元のソート済み