Hướng dẫn giải của 34. Tích các chữ số lẻ (RPODIGIT - )
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
1. Ý tưởng giải quyết
- Đề bài yêu cầu: tính tích các chữ số lẻ; nếu không có chữ số lẻ nào thì in ra 0.
- Biến tích
tich = 1và một biến đếmdem = 0(hoặc biến cờ hiệu) để kiểm tra xem trong số ~n~ có xuất hiện chữ số lẻ nào hay không. - Duyệt qua từng chữ số:
- Nếu
cs % 2 != 0(chữ số lẻ): thực hiện nhân dồntich = tich * csvà tăngdem++.
- Nếu
- Kết thúc vòng lặp:
- Nếu
dem == 0(không có chữ số lẻ nào): in ra0. - Ngược lại: in ra
tich.
- Nếu
2. Mã nguồn mẫu C++
#include <bits/stdc++.h>
using namespace std;
int main() {
long long n;
cin >> n;
long long tich = 1;
int dem = 0;
while (n > 0) {
int cs = n % 10;
if (cs % 2 != 0) {
tich *= cs;
dem++;
}
n /= 10;
}
if (dem == 0) {
cout << 0;
} else {
cout << tich;
}
return 0;
}
Đang tải...