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


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

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


    • 1
      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;
      }
      

      • -2
        kyaru    8:47 p.m. 29 Tháng 9, 2024

        cho mik xin code c++ vs mn


        • 0
          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?


          • 0
            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

            1 phản hồi

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

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

              1 phản hồi

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

                Em nham


                • 1
                  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


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

                    mn 1 ngày tốt lành


                    • 1
                      hoangkhanhtrinh142008    11:27 a.m. 4 Tháng 12, 2022

                      cái này đâu cần binary search bro =/?

                      • 3 bình luận nữa