Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับการหมุนหารด้วย 4 ใน C++


เราได้รับจำนวนมาก เป้าหมายคือการนับการหมุนของ num ที่หารด้วย 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

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

เราจะแปลงตัวเลขเป็นสตริงและข้ามผ่านตัวเลขโดยใช้ a for a loop สำหรับแต่ละคู่ของตัวเลขสองหลักให้แปลงเป็นจำนวนเต็มและตรวจสอบการหารด้วย 4 หากหารลงตัวให้เพิ่มจำนวนขึ้น

  • นำตัวเลขเป็นยาว num.

  • ฟังก์ชัน Rotation_4(long long num) ใช้ตัวเลข num และส่งกลับจำนวนการหมุนของ num ที่หารด้วย 4 ลงตัว

  • แปลง num เป็น string str=to_string(num)

  • จำนวนหลักใน num จะเป็น length=str.length()

  • ใช้ตัวแปรชั่วคราว digit=0 เพื่อเก็บค่าจำนวนเต็มของคู่ตัวเลข

  • นับเริ่มต้นเป็น 0

  • หากความยาวเป็น 1 แสดงว่ามีเพียงหลักเดียวเท่านั้น แปลงเป็นจำนวนเต็ม digit=(str.at(0)-’0’)

  • ตรวจสอบการหารด้วย 4 แล้วคืนค่าผลลัพธ์เป็น 1 หรือ 0

  • ตอนนี้ข้าม str โดยใช้ for loop จาก i=0 ถึง I

  • สร้างตัวเลขสองหลักโดยใช้ 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