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

Đếm số lần xoay của N tạo thành số lẻ và số chẵn trong C++


Cho một số N. Mục tiêu là đếm số lần xoay của N tạo thành số lẻ và số lần tạo thành số chẵn. Ví dụ N = 123, các lần xoay: 123, 321, 132. Số lẻ: 123, 321 (2 lần). Số chẵn: 132 (1 lần).

Ví dụ

Đầu vào: N = 54762
Đầu ra: Lẻ: 2, Chẵn: 3
Giải thích: Các lần xoay: 54762, 25476, 62547, 76254, 47625. Chẵn: 54762, 25476, 76254. Lẻ: 62547, 47625.

Đầu vào: N = 3571
Đầu ra: Lẻ: 4, Chẵn: 0
Giải thích: Tất cả các lần xoay đều là số lẻ.

Giải thuật

Số lẻ/chẵn chỉ phụ thuộc vào chữ số hàng đơn vị. Khi xoay số, mọi chữ số sẽ lần lượt trở thành hàng đơn vị. Do đó, chỉ cần đếm số chữ số chẵn và lẻ trong N.

  • Hàm Even_Odd_rotation(int N) in ra số lần xoay lẻ và chẵn.
  • Dùng vòng do-while lấy chữ số cuối N % 10.
  • Nếu chẵn tăng Even_rotation, ngược lại tăng Odd_rotation.
  • Chia N cho 10, lặp cho đến khi N == 0.

Ví dụ triển khai

#include <bits/stdc++.h>
using namespace std;

void Even_Odd_rotation(int N) {
    int Even_rotation = 0;
    int Odd_rotation = 0;
    do {
        int value = N % 10;
        if (value % 2 == 1) Odd_rotation++;
        else Even_rotation++;
        N = N / 10;
    } while (N != 0);
    cout << "Count of rotations of N which are Odd are: " << Odd_rotation;
    cout << "\nCount of rotations of N which are Even are: " << Even_rotation;
}

int main() {
    int N = 341;
    Even_Odd_rotation(N);
    return 0;
}

Kết quả

Count of rotations of N which are Odd are: 2
Count of rotations of N which are Even are: 1