Siêu đối xứng (THTB Đà Nẵng 2022)

Xem PDF

Điểm: 300 Thời gian: 1.0s Bộ nhớ: 256M Input: dx.inp Output: dx.out

Một số nguyên dương được gọi là siêu đối xứng nếu tất cả các chữ số của nó giống nhau. Chẳng hạn số \(777\) hoặc \(4444\) là các số nguyên dương siêu đối xứng.

Nhập từ bàn phím một số nguyên dương \(x\). Hãy tìm và in ra màn hình số nguyên dương \(y\) nhỏ nhất sao cho tổng \(x + y\) là một số nguyên dương siêu đối xứng.

Input

  • Gồm 1 dòng duy nhất chứa số nguyên dương \(x\) \((1 \leq x \leq 10^{16})\).

Scoring

  • Subtask \(1\) (\(50\%\) số test): \(x \le 10^6\).
  • Subtask \(2\) (\(30\%\) số test): \(10^6 < x \le 10^9\).
  • Subtask \(3\) (\(20\%\) số test): \(10^9 \le x \le 10^{16}\).

Example

Test 1

Input
45
Output
10
Note

\(45 + 10 = 55\)


Bình luận

  • ronaldo12345 8:51 p.m. 7 Tháng 2, 2025

    nếu n là siêu đối xứng thì in ra 0 chứ nhỉ

    • TrungNhan0810 10:37 a.m. 26 Tháng 10, 2024

      bài j bị cin k đc cùi vc

      • minhskibidi 1:41 p.m. 25 Tháng 10, 2024

        Code AC 100% theo ý tưởng của tranductri2003:

        Spoiler
        C++
        #include <iostream>
        #include <string>
        #include <vector>
        
        using namespace std;
        
        int numLength(long long num) {
        int lastTwo = num % 100;
        
            // làm tròn chữ số nếu số cuối lớn hơn 90 (cho test số 4)
            if (lastTwo >= 90) {
                num = ((num / 100) + 1) * 100;
            }
            int count = 0;
            while (num > 0) {
                count++;
                num /= 10;
            }
            return count;
        }
        
        vector<long long> superNumber;
        long long n;
        
        // khởi tạo mảng theo số chữ số (lấy từ hàm numLength)
        void initNum(int length) {
            string firstNumberStr = "1";
            for (int i = 1; i < length; i++) firstNumberStr += "1"; // skip chữ số đầu tiên vì đã nhập r
            long long firstNumber = stoll(firstNumberStr);
        
            long long dynamicNumber = 0; // tôi thề tôi không dùng chatgpt vì chatgpt không bảo giờ để tên ngu như thế này
            for (int i = 0; i < 9; i++) { // luôn luôn có 9 chữ số trong mảng superNumber (1 -> 9)
                dynamicNumber += firstNumber;
                superNumber.push_back(dynamicNumber);
            }
        }
        
        int main() {
            freopen("dx.inp", "r", stdin);
            freopen("dx.out", "w", stdout);
        
            cin >> n;
            int length = numLength(n);
            initNum(length); // tạo giá trị cho mảng superNumber
        
            for (int i = 0; i < 9; i++) {
                long long minusNum = superNumber[i] - n;
                if(minusNum > 0) {
                    cout << minusNum;
                    break;
                }
            }
        
            return 0;
        }
        
        • kyaru 8:47 p.m. 29 Tháng 9, 2024

          cho mik xin code c++ vs mn

          • maichithanh2905_codeC 4:35 p.m. 15 Tháng 2, 2024

            Sao file output của em bị lỗi vậy, theo test là phải ra kết quả mà sao cái test nào file output của em cũng ra 222222222222224, em có thử test ở ngoài thì đúng nhưng sao đưa lên máy lại sai?

            • iq2000laday 8:54 a.m. 12 Tháng 11, 2023

              Các số có 1 chữ số có được gọi là số siêu đối xứng ko :v

              • xthabao1 10:11 p.m. 8 Tháng 10, 2023

                sao output bị lỗi nhỉ
                đáp án ko cout ra dc

                • kiengkvn2305 1:08 a.m. 24 Tháng 9, 2023 đã chỉnh sửa

                  Em nham

                  • NguyenLePhuc 11:20 a.m. 15 Tháng 8, 2023 đã chỉnh sửa

                    Cho em hỏi sao em bị lỗi EOFError vậy?
                    *Đã biết lỗi

                    • huyquang_25 5:11 p.m. 31 Tháng 12, 2022 đã chỉnh sửa

                      mn 1 ngày tốt lành

                      • 4 bình luận nữa