ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1560-A, *800
    코드포스 2021. 8. 30. 14:30
     

    Problem - 1560A - Codeforces

     

    codeforces.com

    문제

    • 1부터 다음 조건을 만족하는 수$x$를 나열할 때, $k(1\leq k \leq 1000)$번째 수는?
    • $x$는 3의 배수가 아니며 일의자리수가 3이 아니다

     

    $O(\frac{5}{3}k)\approx O(k)$

    1부터 하나하나 따질 때 시간복잡도 분석을 해보자

    살구색 음영은 3의 배수인 수들이고 빨간색 빗금은 3의 배수가 아닌 수 중 일의자리수가 3인 수이다
    위 수들은 주황색 점선을 기준으로 주기가 반복된다. 따라서
    $$\frac{18}{30}\cdot \text{(last number)}\leq k$$

    1
    2
    3
    4
    5
    6
    7
    8
    like = [0]
     
    = 1
    while len(like) <= 1001:
        if k % 3 != 0 and k % 10 != 3: like.append(k)
        k += 1
     
    for _ in range(int(input())): print(like[int(input())])cs

    '코드포스' 카테고리의 다른 글

    1283-C, *1500  (0) 2021.09.17
    1283-D, *1800  (0) 2021.09.16
    1498-B, *1300  (0) 2021.08.16
    1553-C, *1200  (0) 2021.08.15
    1553-D, *1500  (0) 2021.08.15

    댓글

Designed by Tistory.