#!/usr/bin/python

# It is well known that if the square root of a natural number is not an integer, then it is irrational.
# The decimal expansion of such square roots is infinite without any repeating pattern at all.
#
# The square root of two is 1.41421356237309504880..., and the digital sum of the first one hundred decimal digits is 475.
#
# For the first one hundred natural numbers, find the total of the digital sums of the first one hundred decimal digits
# for all the irrational square roots

from mpmath import sqrt, mp

from projecteuler import timing


def is_square(n):
    p = sqrt(n)
    m = int(p)

    return bool(p == m)


@timing
def p080():
    # Set the precision to 100 digits
    mp.dps = 102

    sum_ = 0

    for i in range(2, 100):
        if not is_square(i):
            # Calculate the square root of the current number with the given precision and sum the digits to the total.
            root = str(sqrt(i))

            sum_ = sum_ + int(root[0])

            for j in range(2, 101):
                sum_ = sum_ + int(root[j])

    print('Project Euler, Problem 80')
    print(f'Answer: {sum_}')


if __name__ == '__main__':
    p080()