Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Đếm số lần xoay chuỗi số chia hết cho 4 trong C++


Cho một số lớn. Mục tiêu là đếm số lần xoay vòng của số đó mà kết quả chia hết cho 4.

Sử dụng tính chất: một số chia hết cho 4 nếu 2 chữ số cuối của nó chia hết cho 4. Ví dụ số 1234, các lần xoay: 1234, 4123, 3412, 2341. Trong đó 3412 chia hết cho 4 vì 12 chia hết cho 4.

Ví dụ

Đầu vào: num = 15324
Đầu ra: 2
Giải thích: Các lần xoay: 15324, 41532, 24153, 32415, 53241. Trong đó 15324 và 41532 chia hết cho 4.

Đầu vào: num = 848484
Đầu ra: 6
Giải thích: Tất cả 6 lần xoay đều chia hết cho 4.

Giải thuật

  • Chuyển số thành chuỗi str.
  • Nếu độ dài = 1: kiểm tra chữ số đó chia hết cho 4.
  • Duyệt qua từng cặp 2 chữ số liên tiếp (tính cả cặp vòng tròn: chữ số cuối và chữ số đầu).
  • Chuyển cặp thành số và kiểm tra chia hết cho 4.

Ví dụ triển khai

#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[0] - '0';
        return (digit % 4 == 0) ? 1 : 0;
    }
    for (int i = 0; i < length - 1; i++) {
        digit = (str[i] - '0') * 10 + (str[i+1] - '0');
        if (digit % 4 == 0) count++;
    }
    // Cặp vòng tròn: chữ số cuối và chữ số đầu
    digit = (str[length-1] - '0') * 10 + (str[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;
}

Kết quả

Count of rotations divisible by 4 are: 4