# Project Euler Problem 129 - Solved

Solution to ProjectEuler's problem 129 in Python using an efficient way to represent a repunit and modular exponentiation.

The statement of the problem can be found here.

Using the same technique as in my previous post to determine whether a number divides a *repunit* or not, we create a function to find the `A(n)`

by bruteforcing it.

As `A(n)`

can't be greater than *n* we start searching for the number we are looking for from 1000001. The algorithm is really simple:

```
from CommonFunctions import *
from itertools import *
def A(n):
i = 2
while (mod_pow(10, i, 9 * n) != 1):
i += 1
return i
limit = 10 ** 6
if __name__ == '__main__':
for n in count(1000001, 2):
if str(n)[-1] == '5':
continue
x = A(n)
if x > limit:
break
print("The result is:", n)
```

Comments powered by Talkyard.