Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm các phép quay chia hết cho 4 trong C ++

Chúng tôi được cung cấp một số lượng lớn. Mục đích là để đếm các vòng quay của num chia hết cho 4.

Vì các phép quay không thể thực hiện lại nhiều lần. Chúng tôi sẽ sử dụng tài sản chia hết cho 4. Nếu hai chữ số cuối cùng chia hết cho 4 thì số đó chia hết cho 4. Nếu số đó là 1234 thì phép quay sẽ được 1234, 4123, 3412, 2341 trong đó 3412 sẽ chia hết cho 4 vì hai chữ số cuối cùng là 12 là chia hết cho 4.

Hãy cho chúng tôi hiểu với các ví dụ.

Đầu vào - num =15324

Đầu ra - Số phép quay chia hết cho 4 là:2

Giải thích - Xoay vòng là -

15324, 41532, 24153, 32415, 53241

Trong số này, 15324 và 41532 sẽ chia hết cho 4.

Đầu vào - num =848484

Đầu ra - Số phép quay chia hết cho 4 là - 6

Giải thích - Xoay vòng là -

848484, 484848, 848484, 484848, 848484, 484848

Tất cả các phép quay này đều chia hết cho 4

Cách tiếp cận được sử dụng trong chương trình dưới đây như sau

Chúng tôi sẽ chuyển đổi số thành một chuỗi và duyệt qua số đó bằng cách sử dụng vòng lặp for. Đối với mỗi cặp hai chữ số, hãy chuyển chúng thành một số nguyên và kiểm tra tính chia hết cho 4. Nếu chia hết thì tăng số lượng.

  • Lấy số dài bằng số dài.

  • Hàm Rotation_4 (dài dài num) lấy số num và trả về số lần quay của num chia hết cho 4.

  • Chuyển đổi num thành chuỗi str =to_string (num).

  • Số chữ số trong num sẽ là length =str.length ().

  • Lấy biến số tạm thời =0 để lưu trữ các giá trị nguyên của các cặp chữ số.

  • Lấy số lượng ban đầu là 0.

  • Nếu độ dài là 1 thì chỉ có một chữ số duy nhất. Chuyển nó thành số nguyên, chữ số =(str.at (0) - ’0’)

  • Kiểm tra tính chất chia hết cho 4 và trả về kết quả là 1 hoặc 0.

  • Bây giờ duyệt str bằng vòng lặp for từ i =0 đến I

  • Tạo số có hai chữ số bằng cách sử dụng chữ số =(str.at (i) - '0') * 10 + (str.at (i + 1) - '0') vì mỗi cặp sẽ trở thành hai chữ số cuối cùng trong phép quay.

  • Thực hiện quy trình tương tự như trên đối với cặp được tạo bởi chữ số cuối cùng và chữ số đầu tiên bằng cách sử dụng chữ số =(str.at (length-1) - '0') * 10 + (str.at (0) - '0'); Kiểm tra khả năng chia hết cho 4 và cập nhật số lượng.

  • Cuối cùng, kết quả là trả về.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Count of rotations divisible by 4 are: 4