C++中計算能被4整除的旋轉數


給定一個很大的數字,目標是計算該數字的能被4整除的旋轉數。

由於旋轉不能無限次進行,我們將使用能被4整除的特性。如果最後兩位數字能被4整除,則該數字能被4整除。例如,如果數字是1234,它的旋轉將是1234、4123、3412、2341,其中3412能被4整除,因為最後兩位數字12能被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迴圈遍歷該數字。對於每對兩位數字,將其轉換為整數並檢查是否能被4整除。如果能被整除,則遞增計數。

  • 將數字作為long long num。

  • 函式Rotation_4(long long num)接收數字num並返回num能被4整除的旋轉數。

  • 將num轉換為字串str=to_string(num)。

  • num中的數字個數為length=str.length()。

  • 使用臨時變數digit=0儲存兩位數字的整數值。

  • 將初始計數設定為0。

  • 如果length為1,則只存在一位數字。將其轉換為整數,digit=(str.at(0)-’0’)

  • 檢查是否能被4整除,並返回結果1或0。

  • 現在使用for迴圈從i=0到I <length-1遍歷str。

  • 使用digit=(str.at(i)-'0')*10 + (str.at(i+1)-'0')構成兩位數,因為每對數字都將成為旋轉中的最後兩位數字。

  • 對由最後一位和第一位數字構成的對執行相同的過程,使用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

更新於:2020年12月1日

633 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.