SỐ ĐẸP

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
Python, Scratch


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    TUANQUANG_3   đã bình luận 5 ngày trước sửa 2

    EZ NHƯNG SRATCH :)


  • -2
    sds   đã bình luận 11 ngày trước

    def isbeautifulnumber(num): """ Check if a number is beautiful. A number is beautiful if it consists only of digits 6 and 8 or starts with 6 followed by digits that may include 8. """ str_num = str(num)

    Copy
    # Check if the number consists of the digits 6 and 8 only
    if all(digit in '68' for digit in str_num):
        return True
    
    # Check if the number starts with 6 and is followed by any number of 6s or 8s
    if str_num[0] == '6' and all(digit in '68' for digit in str_num[1:]):
        return True
    
    return False
    

    def findbeautifulposition(N): """ Find the position of a beautiful number in the ordered list of beautiful numbers. """ beautiful_numbers = []

    Copy
    # Generate beautiful numbers until we find at least enough for a reasonable range
    for i in range(1, 100000):
        if is_beautiful_number(i):
            beautiful_numbers.append(i)
    
    if N in beautiful_numbers:
        return beautiful_numbers.index(N) + 1  # +1 to make it a 1-based index
    else:
        return "NO"
    

    Example usage

    if name == "main": N = int(input("Enter a natural number N: ")) result = findbeautifulposition(N) print(result)


  • -1
    thienphat55CN   đã bình luận 11 ngày trước

    mình đươc 3/5 2 cái TLE


  • -2
    khuukhanhbinhat2   đã bình luận 14 ngày trước

    helps me,plese


    • -2
      phantrangiabao   đã bình luận 12 ngày trước

      //code ne dung full n = input() ind = int(len(n) * (len(n) + 1) / 2 - 1) + (n.count('8') + 1)

      if '8' not in n and '6' not in n: print('NO') else: x = -1 y = -1 if '8' in n: x = n.index('8') if '6' in n: y = n.index('6')

      Copy
      if x != -1 and y != -1 and x < y:
          print('NO')
      elif x != -1 and n[:x].count('6') == len(n[:x]):
          print(ind)
      elif y != -1 and n.count('6') == len(n):
          print(ind)
      else:
          print('NO')
      

  • 0
    thanhha   đã bình luận 18 ngày trước

    kíu toi với


    • 0
      phantrangiabao   đã bình luận 18 ngày trước

      số 666 mà là số đẹp thì chịu rồi =)


  • -1
    vi   đã bình luận một tháng trước

    print("cho cách làm")


  • -2
    longxautrai   đã bình luận một tháng trước

    code nè s = str(n) length = len(s) position = 0

    Đếm các số đẹp có ít chữ số hơn

    for i in range(1, length): position += countbeautifulnumberswithlength(i)

    Đếm các số đẹp có cùng số chữ số

    for i in range(length): if s[i] == '6': continue elif s[i] == '8': position += 2 ** (length - i - 1)

    position += 1 # Chuyển từ chỉ số 0-based sang 1-based return position


  • -1
    hgdeptraiso1vn   đã bình luận một tháng trước

    de ma,nhng tui chi dc 80/100:)))


  • 0
    tiger1705   đã bình luận một tháng trước

    Bài này chỉ có 2 số , ý nghĩa của bài này là mạnh luôn đúng sau yếu để phòng thủ một cách thông minh ( mình nghĩ vậy :) )


  • 0
    HaizzHaizzpS   đã bình luận một tháng trước

    from collections import deque def generatenumbers(limit): result = [] queue = deque(["6", "8"]) while queue: s = queue.popleft() if "86" not in s: result.append(s) if len(s) < limit: queue.append(s + "6") queue.append(s + "8") return result A=generatenumbers(16) N=input() for i in range(len(N)-1): if N[i]>N[i+1] or (N[i]!='6' and N[i]!='8'): print('NO') break else: for j in range(len(A)): if A[j]==N: print(j+1) break 5/5 ạ


  • 1
    Giabao2016tht   đã bình luận 2 tháng trước

    https://scratch.mit.edu/projects/1169752772 Code Scratch của mình đây các bạn!Mình được 100% số điểm với code của mình.


  • -1
    Nguyenhobaochau   đã bình luận 2 tháng trước

    code AC NÈ (100%) def is_beautiful(number): s = str(number) if any(ch not in '68' for ch in s): return False if '86' in s: return False return True

    def generatebeautifulnumbers(maxlength=15): from itertools import product beautifulnumbers = [] for length in range(1, maxlength + 1): for digits in product('68', repeat=length): num = ''.join(digits) if isbeautiful(num): beautifulnumbers.append(int(num)) beautifulnumbers.sort() return beautiful_numbers

    def findposition(N): if not isbeautiful(N): return "NO" beautifulnumbers = generatebeautifulnumbers(len(str(N))) position = 1 for num in beautifulnumbers: if num == N: return position position += 1 return "NO"

    Input

    N = int(input())

    Output

    print(find_position(N))


    • 0
      sb20240044   đã bình luận 18 ngày trước

      tối ưu cho bạn: n = input() if any(c not in '68' for c in n) or '86' in n: print("NO") else: l = len(n) s8 = n.count('8') res = ((l + 2) * (l - 1)) // 2 + (s8 + 1) print(res)


  • 1
    huuphong0904   đã bình luận 2 tháng trước

    công thức đc full test 5/5: ((2 + (độ dài cuả n)) x ((độ dài cuả n)-1)) / 2 + (số lượng số 8 trong n + 1)


  • -1
    minhhoangharryle   đã bình luận 2 tháng trước

    def isbeautiful(n): #a beautiful numner is a number include only 6 and 8 and 6 stand before 8 adn no 8 stand before 6 #check if include non 6 and 8 for i in str(n): if i != '6' and i != '8': return False #check if 8 stand before 6 for i in range(len(str(n))): if str(n)[i] == '6': for j in range(i): if str(n)[j] == '8': return False return True def nthbeautiful(n): # if not isbeautiful(n): # return False # 6 is the 1st beautiful number # 8 is the 2nd beautiful number # 66 is the 3rd beautiful number # 68 is the 4th beautiful number # 88 is the 5th beautiful number # 666 is the 6th beautiful number # guess the nth beautiful number listnum = [] for num6 in range(16): for num8 in range(16): if 0<num6 + num8 <=16 : listnum.append(int('6' * num6 + '8' * num8)) listnum.sort() # get the index of n in the listnum return listnum.index(n) + 1 if n in listnum else False def main(): n = int(input()) if isbeautiful(n): print(nthbeautiful(n)) else: print("NO") # print (nthbeautiful(n)) if name == "main": main()


  • 0
    CAOTUCAMQUY   đã bình luận 2 tháng trước chỉnh sửa

    Heading ##o


  • 1
    trungcutevip   đã bình luận 2 tháng trước

    Đầu tiên cứ đếm SLS 8 rồi làm theo công thức:(độ dài của N+1)x độ dài của N:2.Sau đó cộng với SLS 8 là ra vị trí.Làm trên scratch cũng được max điểm nè.


  • 0
    huuphong0904   đã bình luận 4 tháng trước

    ko cần lập danh sách chỉ cần kiểm tra số đẹp. Bắt đầu từ 1, tăng dần lên n, cứ mỗi số lại kiểm tra 1 lần nếu đúng thì tăng kết quả lên 1, nếu ko thì tiếp tục tăng.


  • 0
    bingchilingmeme   đã bình luận 4 tháng trước

    Cho mình hỏi làm sao để làm được danh sách số đẹp vậy?


  • 2
    tinhoc   đã bình luận 5 tháng trước

    N=input() KQ=[] for x in range(0,len(N)): tam='' for y in range(0,x+1): tam=tam+'6' KQ.append(tam) for y in range(0,x+1): tam=tam.replace('6','8',1) tam1=tam[: :-1] KQ.append(tam1) if N in KQ: print(KQ.index(N)+1) else: print('NO')


  • -1
    O_long   đã bình luận 5 tháng trước

    n = input() ind = int(len(n) * (len(n) + 1) / 2 - 1) + (n.count('8') + 1)

    if '8' not in n and '6' not in n: print('NO') else: if '8' in n: x = n.index('8') if '6' in n: y = n.index('6') else: y = 0 if x < y: print('NO') else: if n[:x].count('6') == len(n[:x]): print(ind) else: print('NO') else: if n.count('6') == len(n): print(ind) else: print('NO')


  • 0
    KV24A_240   đã bình luận 6 tháng trước

    ai đó có thể gửi file code của scratch để tôi học đc ko ạ?


  • 1
    dumbestcoder   đã bình luận lúc 5, Tháng 7, 2024, 16:19 chỉnh sửa

    n=input() ind=int(len(n)*(len(n)+1)/2-1)+(n.count('8')+1) if not '8' in n and not '6' in n: print('NO') else: if '8' in n: x=n.index('8') if '6' in n: y=n.index('6') else: y=0 if x < y : print('NO') else: if (n[0:x]).count('6')==len(n[0:x]): print(ind) else: print('NO') else: if n.count('6')==len(n): print(ind) else: print(ind)


  • -3
    quynhanh_789666   đã bình luận lúc 4, Tháng 7, 2024, 16:48

    tui đc có 80 điểm😞😞😞😞😞😞


  • -1
    doanhungtinhoc_2013   đã bình luận lúc 29, Tháng 6, 2024, 11:14

    ko khó lắm ak mọi người ai cần code py ko mình có nek 100% ac


    • -1
      KV24A_240   đã bình luận 6 tháng trước

      cho tôi xin với


    • 0
      SK24_A802   đã bình luận lúc 4, Tháng 7, 2024, 16:36

      easy 2:00 la xong


  • 2
    nguyenminhviet   đã bình luận lúc 29, Tháng 6, 2024, 10:53

    nhưng chỉ được 4/5 thôi


  • 2
    nguyenminhviet   đã bình luận lúc 29, Tháng 6, 2024, 10:52

    https://scratch.mit.edu/projects/1043235043/editor


    • 3
      anhkiet1306   đã bình luận 13 ngày trước

      Bạn chưa chia sẻ bài của mình à


    • 3
      anhkiet1306   đã bình luận 13 ngày trước

      Sao lại không thấy


    • -2
      cunkeninscratch   đã bình luận 2 tháng trước

      editor sao vô cha


    • 0
      KV24A_240   đã bình luận 3 tháng trước chỉnh sửa

      404 Không tìm thấy


    • 0
      thienthansanga2k13   đã bình luận lúc 29, Tháng 6, 2024, 14:48

      không có gì, mik tìm thấy rồi,cảm ơn bạn nhé!


    • 0
      thienthansanga2k13   đã bình luận lúc 29, Tháng 6, 2024, 14:46

      sao mình ko tìm được vậy bạn,toàn lỗi hệ thống ko à


  • -1
    nguyenminhviet   đã bình luận lúc 29, Tháng 6, 2024, 10:52

    TUI CÓ LINK SCRATCH NÈ


  • 0
    thienthansanga2k13   đã bình luận lúc 27, Tháng 6, 2024, 9:56

    có ai biết code của scratch không? chỉ mik với


  • -3
    HDG_12   đã bình luận lúc 24, Tháng 6, 2024, 15:42

    cứu


    • 6
      SK24_A562   đã bình luận lúc 27, Tháng 6, 2024, 8:42

      Đây code nè. dù bị sai nhưng có đỡ hơn không :)) def isbeautifulnumber(n): s = str(n) if any(d not in '68' for d in s): return False if '86' in s: return False return True

      def countbeautifulnumberswithlength(l): return 2 ** l

      def beautifulnumberposition(n): if not isbeautifulnumber(n): return "NO"

      Copy
      s = str(n)
      length = len(s)
      position = 0
      
      # Đếm các số đẹp có ít chữ số hơn
      for i in range(1, length):
          position += count_beautiful_numbers_with_length(i)
      
      # Đếm các số đẹp có cùng số chữ số
      for i in range(length):
          if s[i] == '6':
              continue
          elif s[i] == '8':
              position += 2 ** (length - i - 1)
      
      position += 1  # Chuyển từ chỉ số 0-based sang 1-based
      return position
      

      Đọc đầu vào và in ra kết quả

      N = int(input("Nhập một số tự nhiên N: ")) print(beautifulnumberposition(N))


      • 1
        quynhanh_789666   đã bình luận lúc 4, Tháng 7, 2024, 16:52

        chả đc tòn 80 luôn á


  • 5
    NgocPhung   đã bình luận lúc 3, Tháng 6, 2024, 13:48

    Chào mọi người, em muốn hỏi là khi mình qua được bài đó rồi thì mình không thể xem được bài giải của người khác mặc dù mình đã accept bài đó rồi? Chỉ có thể xem code của mình? Em xin cảm ơn mọi người giải đáp thắc mắc


    • -1
      Fstr23   đã bình luận 3 tháng trước

      Đúng thế


    • 0
      SK23B_553   đã bình luận lúc 8, Tháng 6, 2024, 15:56

      Hinh nhu la the that


      • 0
        SK24_A329   đã bình luận lúc 24, Tháng 6, 2024, 14:36

        đúng thiệt


  • -7
    voductridn   đã bình luận lúc 30, Tháng 5, 2024, 15:49

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 1
    bongbanhoahieu   đã bình luận lúc 11, Tháng 5, 2024, 15:01 sửa 2

    HURA


  • -20
    mtxvu23   đã bình luận lúc 23, Tháng 3, 2024, 20:44

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


    • -25
      ngocxink123   đã bình luận lúc 2, Tháng 5, 2024, 21:41 chỉnh sửa

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.