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.
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 = 1 và một biến đếm dem = 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ồn tich = tich * cs và tăng dem++.
  • Kết thúc vòng lặp:
    • Nếu dem == 0 (không có chữ số lẻ nào): in ra 0.
    • Ngược lại: in ra tich.
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...