Hướng dẫn giải của F15: Số đối xứng


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.

Hướng dẫn giải

Với N (11 <= N <= 99), cộng N với số đảo ngược của nó cho đến khi được số đối xứng. Đề bảo đảm có đáp án.

Sub 1: Lặp cộng với số đảo ngược — ~O(số bước)~

Trong vòng lặp: nếu N đã đối xứng thì dừng, nếu không thì N = N + đảo(N). Đề bảo đảm có đáp án nên vòng lặp kết thúc. Bài này chỉ có một cách hợp lý nên viết 1 sub (lý do).

Kết quả chấm: đạt 20/20 test.

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

// Dao nguoc so x
long long daoSo(long long x) {
    long long r = 0;
    while (x > 0) {
        r = r * 10 + x % 10;
        x /= 10;
    }
    return r;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    long long n;
    cin >> n;
    // Cong n voi so dao nguoc cua no cho den khi duoc so doi xung
    while (daoSo(n) != n)
        n += daoSo(n);
    cout << n << endl;
    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.