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-whilelấy chữ số cuốiN % 10. - Nếu chẵn tăng
Even_rotation, ngược lại tăngOdd_rotation. - Chia
Ncho 10, lặp cho đến khiN == 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