forked from dima-math/Math-scripts
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchip_problem.py
More file actions
30 lines (26 loc) · 950 Bytes
/
chip_problem.py
File metadata and controls
30 lines (26 loc) · 950 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Фишка стоит на одном из полей бесконечной в обе стороны
# клетчатой полоски бумаги. Она может сдвигаться на m полей
# вправо или на n полей влево. При каких m и n она сможет
# переместиться в соседнюю справа клетку? За какое наименьшее
# число ходов она сможет это сделать?
def gcd(a, b):
while b > 0: # The best way to find gcd
a = a % b
a, b = b, a
return(a)
b = []
for m in range(1, 21):
a = [m]
for n in range(2, 21):
if gcd(m, n) == 1:
k = 0
while (k * m) % n != 1:
k = k + 1
a.append(k + (k * m - 1) // n)
else:
a.append(0)
b.append(a)
for i in b:
print(i)