Sevens rule, zeros drool def seven_zero(n): Seven is considered a lucky number in Western cultures, whereas zero is what nobody wants to be. We now bring these two opposites briefly together with positive integers that consist of some solid sequence of sevens, followed by some (possibly empty) solid sequence of zeros. Examples of such integers are 7, 77777, 7700000, 77777700, or 700000000000000. A surprising theorem proves that for any positive integer n, there exist infinitely many integers of such seven-zero form that are divisible by n. This function should return the smallest such seven-zero integer. This exercise is about efficiently generating all numbers of the constrained form of sevens and zeros in strictly ascending order to guarantee finding the smallest working such number. This logic might be best written as a generator to yield such numbers. The body of this generator consists of two nested loops. The outer loop iterates through the number of digits d in the current number. For each d, the inner loop iterates through all possible k from one to d to create a number that begins with a block of k sevens, followed by a block of d-k zeros. Most of the work done inside that helper generator, the seven_zero function itself is short and sweet. n Expected result 17 7777777777777777 42 7770 103 7777777777777777777777777777777777 77700 77700 2**50 700000000000000000000000000000000000000000000000000 12345 (a behemoth that consists of a total of 822 sevens, followed by a single zero)
Sevens rule, zeros drool
def seven_zero(n):
Seven is considered a lucky number in Western cultures, whereas zero is what nobody wants to be. We now bring these two opposites briefly together with positive integers that consist of some solid sequence of sevens, followed by some (possibly empty) solid sequence of zeros. Examples of such integers are 7, 77777, 7700000, 77777700, or 700000000000000. A surprising theorem proves that for any positive integer n, there exist infinitely many integers of such seven-zero form that are divisible by n. This function should return the smallest such seven-zero integer.
This exercise is about efficiently generating all numbers of the constrained form of sevens and zeros in strictly ascending order to guarantee finding the smallest working such number. This logic might be best written as a generator to yield such numbers. The body of this generator consists of two nested loops. The outer loop iterates through the number of digits d in the current number. For each d, the inner loop iterates through all possible k from one to d to create a number that begins with a block of k sevens, followed by a block of d-k zeros. Most of the work done inside that helper
generator, the seven_zero function itself is short and sweet.
n | Expected result |
17 | 7777777777777777 |
42 | 7770 |
103 | 7777777777777777777777777777777777 |
77700 | 77700 |
2**50 | 700000000000000000000000000000000000000000000000000 |
12345 | (a behemoth that consists of a total of 822 sevens, followed by a single zero) |
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 2 images