Advertisement
Dimaush

Untitled

Nov 12th, 2022
689
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.16 KB | None | 0 0
  1. def finddivs(a):
  2.     divs = []
  3.     cnts = []
  4.     d = 2
  5.     while a > 1:
  6.         while a % d != 0 and d ** 2 <= a:
  7.             d += 1
  8.         if a % d != 0:
  9.             divs.append(a)
  10.             cnts.append(1)
  11.             a = 1
  12.         else:
  13.             divs.append(d)
  14.             cnts.append(0)
  15.             while a % d == 0:
  16.                 a //= d
  17.                 cnts[-1] += 1
  18.     return divs, cnts
  19.  
  20.  
  21. def check3(m):
  22.     k = m
  23.     p = 3
  24.     u = 0
  25.     while k >= p:
  26.         u += k // p
  27.         p *= 3
  28.     return u
  29.  
  30.  
  31. a, m = map(int, input().split())
  32.  
  33. divs, cnts = finddivs(a)
  34. for i in range(len(cnts)):
  35.     cnts[i] *= m
  36. print(divs)
  37. print(cnts)
  38.  
  39. nums = [0] * len(divs)
  40. for i in range(len(divs)):
  41.     nums[i] = [0] * 3
  42.  
  43. for i in range(len(divs)):
  44.     if divs[i] == 3:
  45.         left = 1
  46.         right = a ** m
  47.         while right - left > 1:
  48.             middle = (left + right) // 2
  49.             if check3(middle) < cnts[i]:
  50.                 left = middle
  51.             else:
  52.                 right = middle
  53.         if check3(left) < cnts[i]:
  54.             nums[i][0] = right
  55.         else:
  56.             nums[i][0] = left
  57.         print(nums[i][0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement