Câu hỏi số 99

Xem PDF



Thời gian:
Scratch 2.0s

Tác giả:
Dạng bài
Điểm: 100 (p) Thời gian: 1.5s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Rùa có rất nhiều thắc mắc trong đầu. Hôm nay Rùa đặc biệt thắc mắc đến câu hỏi số 99, với nội dung như sau:

Có một số nguyên dương \(N\), số nguyên dương nhỏ nhất có tổng các chữ số của nó bằng \(N\) là số mấy?

Input

Số nguyên dương \(N\) \((1 \leq N \leq 10^{6})\)

Output

Số nguyên dương nhỏ nhất mà có tổng các chữ của nó bằng \(N\).

Example

Test 1

Input
10
Output
19
Note
  • Số \(19\) có tổng các chữ số là \(1+9=10\). Ngoài ra còn các số khác cũng có tổng các chữ số là \(10\), ví dụ như: \(28, 37, 46, 55,...\) nhưng số \(19\) là số nhỏ nhất.

Test 2

Input
18
Output
99

Bình luận

  • danh3003 12:06 a.m. 20 Tháng 12, 2024

    Đúng là câu hỏi số 99
    Với bài này ta cần có những nhận xét:

    1. Để số tạo ra được nhỏ nhất thì nó cần ít chữ số nhất => Để có ít chữ số thì cần dùng nhiều chữ số 9 nhất
    2. Sắp xếp các chữ số theo thứ tự tăng dần thì ta sẽ có được số nhỏ nhất (Ví dụ: sắp xếp lại các chữ số của 29849 thì được số nhỏ nhất là 24899)
      => Nhận xét chung: Số cần tìm sẽ có dạng \(k99...9\) với \(k = n\) % \(9\) và có \(n / 9\) chữ số 9
    Code cho Python
    Python
    n = int(input())
    print(int(str(n % 9) + "9" * (n // 9))) # Nếu có chữ số 0 ở đầu thì khi chuyển sang kiểu số nguyên (int) sẽ được tự động loại bỏ
    
    Code cho C++
    C++
    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
        int n;
        cin >> n;
        string a = ""; // Khi dùng C++ cần dùng string nếu không muốn tràn số
        if (n % 9 == 0){
            for (int i = 0; i < n / 9; i++){
                a += "9";
            }
        }else{
            a += char(int('0') + n % 9); // int('0') sẽ trả về mã ASCII của '0' và khi cộng thêm n % 9 sẽ được mã ASCII của n % 9
            for (int i = 0; i < n / 9; i++){
                a += "9";
            }
        }cout << a;
        return 0;
    }
    

    Lưu ý

    Không được chép code dưới mọi hình thức! Nếu không thì sẽ có thể dẫn đến khoá tài khoản!

    • H_IT_K35 8:26 a.m. 5 Tháng 10, 2024

      include <bits/stdc++.h>

      using namespace std;
      int main()
      {
      int n;
      cin>>n;
      int f=n/9;
      int f2=n%9;
      if(f2!=0)
      {
      cout<<f2;
      }
      for(int i=1;i<=f;i++)
      {
      cout<<9;
      }
      }
      //code kham khảo cho ae đây

      • PY2BPhamQuangMinh 3:59 p.m. 11 Tháng 6, 2024

        n=int(input())
        if n%9==0:
        print ('9' * int(n//9))
        else:
        print (n%9,'9'*int(n//9),sep='')
        có thế thôi pyhton

        • TDA 9:58 p.m. 13 Tháng 5, 2024
          hint

          nhập n
          nếu n<10=>in ra n
          nếu n>=10 thì
          lấy n trừ dần đi 9 đến khi ko trừ đc nữa với mỗi lần trừ thì k tăng lên 1
          n-(tổng k chữ số 9) và k chữ số 9 (không cách)
          ví dụ
          n=320
          =>k=35 chứ số 9
          lấy 35*9=315
          320-315=5;
          =>đáp án bằng: 599999999999999999999999999999999999

          • kietlamtuan14052013 2:59 p.m. 29 Tháng 10, 2023

            bài này khó thế

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

              có ai biết thuật toán không chỉ mình với

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

                bài này dùng xâu đó

                • VoBaThongL921 10:29 a.m. 31 Tháng 8, 2021

                  Bạn cứ xem đáp số của test là biết liền:)

                  • VoBaThongL921 6:12 p.m. 30 Tháng 8, 2021 đã chỉnh sửa

                    Câu hỏi "số 99" là có lý do cả 🙂