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
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP