用 C++ 統計可被 8 整除的旋轉數
給定一個大數。目標是統計該數字的旋轉數中,有多少個可以被 8 整除。
由於旋轉不能無限次進行,我們將使用可被 8 整除的特性。如果最後三位數字可以被 8 整除,那麼該數字就可以被 8 整除。如果數字是 1800,那麼它的旋轉將是 1800、0180、0018、8001,其中 1800 可以被 8 整除。
讓我們透過例子來理解。
輸入 − num=15320
輸出 − 可被 4 整除的旋轉數的個數為:1
說明 − 旋轉為 −
15320, 01532, 20153, 32015, 53201 Out of these, only 15320 is divisible by 8.
輸入 − num=848484
輸出 − 可被 4 整除的旋轉數的個數為:3
說明 − 旋轉為 −
848484, 484848, 848484, 484848, 848484, 484848 Out of this all 484848’s are divisible by 8.
下面程式中使用的演算法如下
我們將數字轉換為字串,並使用 for 迴圈遍歷該數字。對於每三位數字,將其轉換為整數並檢查是否可以被 8 整除。如果可以被整除,則遞增計數。
將數字作為 long long num。
函式 Rotation_8(long long num) 獲取數字 num 並返回 num 的可被 8 整除的旋轉數的個數。
將 num 轉換為字串 str=to_string(num)。
num 中的數字個數將為 length=str.length()。
使用臨時變數 digit=0 儲存三位數字的整數值。
將初始計數設定為 0。
如果 length 為 1,則僅存在一位數字。將其轉換為整數,digit=(str.at(0)-’0’)。檢查是否可以被 8 整除,並返回結果 1 或 0。
如果 length 為 2,則僅存在兩位數字。將其轉換為整數,part_1=(str.at(0)- ’0’) 和 part_2 = (str[1] - '0') * 10 + (str[0] - '0')。檢查是否可以被 8 整除,並返回結果 1 或 0。
否則,對於長度大於或等於三位數字的情況,使用 for 迴圈從 i=0 到 i=length-1 遍歷字串,並將三個字元轉換為整數值,方法為 digit = (str[i] - '0') * 100 + (str[i + 1] - '0') * 10 + (str[i + 2] - '0');。如果 digit 的值可以被 8 整除,則遞增計數。
對由最後一位數字和前兩位數字組成的對執行相同的操作,方法為 digit = (str[length - 1] - '0') * 100 + (str[0] - '0') * 10 + (str[1] - '0');
檢查是否可以被 8 整除並更新計數。
最後,返回計數作為結果。
示例
#include <bits/stdc++.h>
using namespace std;
int Rotation_8(long long num){
string str = to_string(num);
int length = str.length();
int digit = 0, count = 0;
if (length == 1){
if(digit % 8 == 0){
return 1;
}
else{
return 0;
}
}
else if(length == 2){
int part_1 = (str[0] - '0') * 10 + (str[1] - '0');
int part_2 = (str[1] - '0') * 10 + (str[0] - '0');
if (part_1 % 8 == 0){
count++;
}
if (part_2 % 8 == 0){
count++;
}
return count;
}
else{
for(int i = 0; i < (length - 2); i++){
digit = (str[i] - '0') * 100 + (str[i + 1] - '0') * 10 + (str[i + 2] - '0');
if (digit % 8 == 0){
count++;
}
}
}
digit = (str[length - 1] - '0') * 100 + (str[0] - '0') * 10 + (str[1] - '0');
if(digit % 8 == 0){
count++;
}
digit = (str[length - 2] - '0') * 100 + (str[length - 1] - '0') * 10 + (str[0] - '0');
if(digit%8 == 0){
count++;
}
return count;
}
int main(){
long long num = 24040;
cout<<"Count of rotations divisible by 8 are: "<<Rotation_8(num);
return 0;
}輸出
如果我們執行上述程式碼,它將生成以下輸出:
Count of rotations divisible by 8 are: 3
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP