Advertisement
Guest User

Untitled

a guest
Dec 24th, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. from functools import lru_cache
  2.  
  3. inpt = open("input.txt").read().split('\n')
  4.  
  5. @lru_cache()
  6. def get_public_key(subject_num, loop_size, num = 1):
  7. if loop_size < 1:
  8. return num
  9. return get_public_key(subject_num, loop_size-1, (num * subject_num) % 20201227)
  10.  
  11. def do_stuff(subject_num, loop_size):
  12. num=1
  13. for i in range(loop_size):
  14. num = (num * subject_num) % 20201227
  15. return num
  16.  
  17. card_public = int(inpt[0])
  18. door_public = int(inpt[1])
  19.  
  20. card_loop = -1
  21. door_loop = -1
  22.  
  23. card_test = 1
  24. door_test = 1
  25.  
  26. # for card in range(499):
  27. # if get_public_key(7, card+1) == card_public:
  28. # card_loop = card+1
  29. # break
  30. #
  31. # for door in range(499):
  32. # if get_public_key(7, door+1) == door_public:
  33. # door_loop = door + 1
  34. # break
  35.  
  36. for card in range(100000000000):
  37. card_test = (card_test * 7) % 20201227
  38. if card_test == card_public:
  39. card_loop = card + 1
  40. break
  41.  
  42. for door in range(100000000000):
  43. door_test = (door_test * 7) % 20201227
  44. if door_test == door_public:
  45. door_loop = door + 1
  46. break
  47.  
  48.  
  49. # 14640514 - card, 16754596 - door
  50. assert card_loop != -1 and door_loop != -1
  51.  
  52. print(do_stuff(do_stuff(7, card_loop), door_loop))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement