From 194b56d3760023f5e66607f0b9a340d7c558aca8 Mon Sep 17 00:00:00 2001 From: Kushagra Bansal Date: Thu, 27 Aug 2020 17:10:03 +0530 Subject: [PATCH] Created problem_63 in project_euler (#2357) * Create __init__.py * Add files via upload * Update project_euler/problem_63/sol1.py Co-authored-by: Christian Clauss * Update sol1.py * Update sol1.py * Update sol1.py Co-authored-by: Christian Clauss --- project_euler/problem_63/__init__.py | 1 + project_euler/problem_63/sol1.py | 34 ++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 project_euler/problem_63/__init__.py create mode 100644 project_euler/problem_63/sol1.py diff --git a/project_euler/problem_63/__init__.py b/project_euler/problem_63/__init__.py new file mode 100644 index 000000000..792d60054 --- /dev/null +++ b/project_euler/problem_63/__init__.py @@ -0,0 +1 @@ +# diff --git a/project_euler/problem_63/sol1.py b/project_euler/problem_63/sol1.py new file mode 100644 index 000000000..e429db07b --- /dev/null +++ b/project_euler/problem_63/sol1.py @@ -0,0 +1,34 @@ +""" +The 5-digit number, 16807=75, is also a fifth power. Similarly, the 9-digit number, +134217728=89, is a ninth power. +How many n-digit positive integers exist which are also an nth power? +""" + +""" +The maximum base can be 9 because all n-digit numbers < 10^n. +Now 9**23 has 22 digits so the maximum power can be 22. +Using these conclusions, we will calculate the result. +""" + + +def compute_nums(max_base: int = 10, max_power: int = 22) -> int: + """ + Returns the count of all n-digit numbers which are nth power + >>> compute_nums(10, 22) + 49 + >>> compute_nums(0, 0) + 0 + >>> compute_nums(1, 1) + 0 + >>> compute_nums(-1, -1) + 0 + """ + bases = range(1, max_base) + powers = range(1, max_power) + return sum( + 1 for power in powers for base in bases if len(str((base ** power))) == power + ) + + +if __name__ == "__main__": + print(f"{compute_nums(10, 22) = }")