목차

끔찍한 수열

ps
링크acmicpc.net/…
출처BOJ
문제 번호1877
문제명끔찍한 수열
레벨골드 4
분류

그리디

시간복잡도O(sqrt(n))
인풋사이즈n<=1,000,000
사용한 언어Python 3.11
제출기록31256KB / 40ms
최고기록40ms
해결날짜2023/08/28

풀이

코드

"""Solution code for "BOJ 1877. 끔찍한 수열".

- Problem link: https://www.acmicpc.net/problem/1877
- Solution link: http://www.teferi.net/ps/problems/boj/1877

Tags: [greedy]
"""


from teflib import numtheory


def main():
    M = int(input())

    if M <= 3:
        n_max = n_min = 1
    else:
        q, r = divmod(M, 3)
        n_min = q + (0 if r <= 1 else 1)
        n_max = q + (0 if r == 0 else 1)

    if M == 1:
        m_max = m_min = 1
    else:
        factorization = numtheory.prime_factorization_small(M)
        m_max = sum(factorization.values())
        m_min = m_max - factorization.get(2, 0) // 2

    print(n_max, n_min, m_max, m_min)


if __name__ == '__main__':
    main()