p0048_s0.py

problem 48 · 24 lines

#!/usr/bin/env python3.14
# -*- coding: utf-8 -*-
""" Solution to Euler Problem 48: Self Powers [Level 0]. """
from __future__ import annotations

from solver.runners import runner


@runner.main
def solve(*args: str) -> str:
    """Sum i**i mod 10**10 via three-argument pow (modular exponentiation); O(N log N)."""
    limit = runner.parse_int(args[0])

    modulo: int = 10**10
    result: int = 0
    for i in range(1, limit + 1):
        term = pow(i, i, modulo)
        result = (result + term) % modulo
    return str(result)


if __name__ == "__main__":
    raise SystemExit(solve())