Hướng dẫn giải của HSG9 Long An 2024 - Bài 1

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 làm lời giải.


Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.

Tác giả: kieuphat159

  • Với ~N~ có thể lên đến ~10^{19}~, vượt quá giới hạn của các kiểu dữ liệu số nguyên, ta phải dùng kiểu dữ liệu string để xử lý.
  • Dùng lệnh while để kiểm tra, ta cũng cần viết thêm hàm KiemTra và hàm BienDoi phù hợp.
Code tham khảo của kieuphat159
#include <bits/stdc++.h> 
using namespace std;

bool kiemTra(string n) {
    if (n.size() < 2) return true;
    for (char c: n) {
        if (c == '0') return true;
    }
    return false;
}

void bienDoi(string &n) {
    long long ans = 1;
    for (char c: n) {
        int val = (int)(c - '0');
        ans = ans*val;
    }
    n = to_string(ans);
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    string n;
    cin >> n;

    int Dem = 0;
    while (!kiemTra(n)) {
        Dem++;
        bienDoi(n);
    }
    if (Dem == 0) {
        cout << "YES\n" << 0 << '\n' << "---";
    }
    else {
        cout << "NO\n" << Dem << '\n' << n;
    }
    return 0;
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.