Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def finddivs(a):
- divs = []
- cnts = []
- d = 2
- while a > 1:
- while a % d != 0 and d ** 2 <= a:
- d += 1
- if a % d != 0:
- divs.append(a)
- cnts.append(1)
- a = 1
- else:
- divs.append(d)
- cnts.append(0)
- while a % d == 0:
- a //= d
- cnts[-1] += 1
- return divs, cnts
- def check3(m):
- k = m
- p = 3
- u = 0
- while k >= p:
- u += k // p
- p *= 3
- return u
- a, m = map(int, input().split())
- divs, cnts = finddivs(a)
- for i in range(len(cnts)):
- cnts[i] *= m
- print(divs)
- print(cnts)
- nums = [0] * len(divs)
- for i in range(len(divs)):
- nums[i] = [0] * 3
- for i in range(len(divs)):
- if divs[i] == 3:
- left = 1
- right = a ** m
- while right - left > 1:
- middle = (left + right) // 2
- if check3(middle) < cnts[i]:
- left = middle
- else:
- right = middle
- if check3(left) < cnts[i]:
- nums[i][0] = right
- else:
- nums[i][0] = left
- print(nums[i][0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement