Số một số (Tin học trẻ A - Vòng Sơ khảo 2021)

Xem PDF

Điểm: 100 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Số một số là một số tự nhiên mà các chữ số của số đó giống nhau.

Ví dụ: \(1,8,111,555,99999,...\)

Cho một số tự nhiên \(N\). Hãy đếm số lượng số một số bé hơn hoặc bằng \(N\).

Input

  • Một dòng chứa một số tự nhiên \(N\) (\(N \le 10^9\)).

Output

  • Một số duy nhất là số lượng số thỏa mãn đề bài.

Example

Test 1
Input
15
Output
10
Note

Khi \(N=15\) thì có \(10\) số là \(1,2,3,4,5,6,7,8,9,11\).

Test 2
Input
111
Output
19
Note

Khi \(N = 111\) thì có \(19\) số là:

  • \(9\) số từ \(1\) đến \(9\).
  • \(9\) số \(11,22,33,...,99\).
  • \(1\) số \(111\).

Bình luận

  • v2manhvcl 5:22 p.m. 4 Tháng 12, 2024

    include <bits/stdc++.h>

    using namespace std;

    define ll long long

    const ll MOD = 1e9 + 7;
    ll n;
    const ll N = 1e5 + 2 ;
    ll f[N][13] ;
    void inp() {
    cin >> n;
    }
    ll log(ll n){
    ll ans = 0 ;
    while(n > 0){
    ans++ ;
    n /= 10 ;
    }
    return ans ;
    }
    ll find(ll l , ll r){
    ll so_bi_chia = 0 ;
    for(ll i = 1 ; i <= r ; i++) so_bi_chia = so_bi_chia * 10 + 1 ;
    r = pow(10 , r) ;
    return r / so_bi_chia - (l - 1)/so_bi_chia ;
    }
    void sol() {
    ll new_s = log(n) , ans = 0 ;
    ans = 9 * new_s ;
    ll nums = find(n + 1 , new_s) ;
    cout <<ans - nums ;
    }

    int main() {
    inp();
    sol();
    }

    • TA_Babymonster 9:49 a.m. 14 Tháng 11, 2024

      code python:
      def count_same_digit_numbers(N):
      count = 0
      str_N = str(N)
      length_N = len(str_N)

      for digit in range(1, 10):  # Các chữ số từ 1 đến 9
          for i in range(1, length_N + 1):
              number = int(str(digit) * i) 
              if number <= N:
                  count += 1
              else:
                  break 
      return count
      

      Đọc đầu vào

      N = int(input())

      Xuất kết quả

      print(count_same_digit_numbers(N))

      • anhduc11092014 11:04 a.m. 3 Tháng 8, 2024

        n = int(input())
        l = len(str(n))
        s = 0
        s += (l - 1) * 9
        x = 0
        for i in range(l):
        x += 10 ** i
        s += n // x
        print(s)

        ngắn thôi, khỏi cần dài

        • dxuloc 7:36 p.m. 10 Tháng 1, 2024

          dùng xâu

          • tk22dangminhduc 6:26 a.m. 26 Tháng 6, 2023 chỉnh sửa 8

            Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.

            • kimanhctt2 3:45 p.m. 23 Tháng 2, 2023 đã chỉnh sửa

              Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.