/ SeriousOJ /

Record Detail

Time Exceeded


  
# Status Time Cost Memory Cost
#1 Accepted 40ms 18.168 MiB
#2 Accepted 49ms 18.242 MiB
#3 Time Exceeded ≥1101ms ≥18.32 MiB
#4 Time Exceeded ≥1102ms ≥18.316 MiB

Code

# ruff: noqa: E731, E741
import sys

read = sys.stdin.readline
input = lambda: read().rstrip()
ir = lambda: int(read())
rir = lambda: range(int(read()))
mir = lambda: map(int, read().split())
lmir = lambda: list(map(int, read().split()))


def dp(n):
    n += 1

    factors = [0] * n
    for i in range(1, n):
        for j in range(2 * i, n, i):
            factors[j] += 1

    res = [0, 0]
    for i in range(2, n):
        res.append(res[-1] + factors[i])
    return res


def smart(n):
    res = -n
    for i in range(1, n + 1):
        res += n // i
    return res


def very_smart(n):
    res = -n

    prev = None
    for i in range(1, n + 1):
        cur = n // i
        if cur == prev:
            res -= cur
            break
        res += cur
        prev = cur
    else:
        return res

    for i in range(1, cur + 1):
        lo = (n + i + 1) // (i + 1)
        hi = n // i
        add = (hi - lo + 1) * i
        res += add
    return res


def main():
    for _ in rir():
        n = ir()
        print(very_smart(n))


# 4 8
# 6 8
# 7 8

"""
10
5
3
2
2
1
1
1
1
1

12
6
4
3
2
2
1
1
...

13
6
4
3
2
2
1
1
1
1
1
1
1
"""


def test():
    N = 128
    p = dp(N)
    # print(p)
    # print([smart(i) for i in range(N + 1)])
    for i in range(N):
        rp = p[i]
        rs = smart(i)
        rv = very_smart(i)
        if rs != rp or rv != rp:
            print(f"{i=} {rp=} {rs=} {rv=}")
            return


if __name__ == "__main__":
    if sys.stdin.isatty():
        test()
    else:
        main()

Information

Submit By
Type
Submission
Problem
P1207 D2. GCD equal Absolute Value (Hard Version)
Contest
Educational Round 1
Language
PyPy 3 (Python 3.9.18 PyPy 7.3.15)
Submit At
2025-07-14 16:51:19
Judged At
2025-07-14 16:51:19
Judged By
Score
5
Total Time
≥1102ms
Peak Memory
≥18.32 MiB