fork download
  1. def reciprocal(base,precision,n):
  2. m = 1
  3. res = 0
  4. ress = ""
  5. for _ in range(precision):
  6. while res*n%(m*base) != 1:
  7. res += m
  8. m *= base
  9. return res
  10.  
  11. def to_base(num,base):
  12. res = ""
  13. while num:
  14. res = str(num%base) + res
  15. num //= base
  16. return res
  17.  
  18. def gcd(a,b):
  19. while b:
  20. a,b = b,a%b
  21. return a
  22.  
  23. def exp(p,n,precision):
  24. precision += 10
  25. old_res = 0
  26. res = 1
  27. m = 1
  28. add = 1
  29. i = 1
  30. while old_res != res:
  31. m *= n
  32. g = gcd(m,i)
  33. add = (add*n//g) * reciprocal(p,precision,i//g) % p**precision
  34. i += 1
  35. old_res = res
  36. res += add
  37. res %= p**precision
  38. precision -= 10
  39. return res%p**precision
  40.  
  41. p=3
  42. n=3
  43. precision = 1000
  44.  
  45. print(to_base(exp(p,n,precision),p))
  46.  
  47. p=2
  48. n=4
  49.  
  50. print(to_base(exp(p,n,precision),p))
Success #stdin #stdout 2.52s 28384KB
stdin
Standard input is empty
stdout
221100200122220200201021212200202000000100112122020022101010202000002111021202220210211220220112120022002100122001202021220110202222010200022201002121111100021210011222011110201111202011222110202111110112022110110111111201010220012220121001122100020202001021111220212210122022220121000222212111111221201200201102010020010200220002101122010222221101202122210001210210200221012200102101121112221011200021002120102011021120200012000021110220201211200100021211012201020212222222001112211202111000012020112101121000110111210021220201002112111011102200200010011222002000021020001100001001102211022122210110201202021120012121222102202100112121211121001021212122110020001010202201101100012200000021122201000022100101220010202100102211001002212111000120021001022011122011121222211021210222200002212120222211202002120012102101111111211021001020211212200101202211022220012201010122022022120212121010100002200220100021210000110111220111200210022100201022202111021012112200110210222121110111110022202101101022111
1111010010010000000101011111110000001000101000001011111110100110011011010101010010100100111111101011000101110111110100111100111111000011000011101000001101110000111001110110101010111101010110001101101000101001000010101110001100010111010100010101011001000111111011110000110011011000110000100110010100000110000011011000000100010011110101101010010000101101100000111010001011001100010110110001010110111011011101010001111110101000000010101100110100111010111000101001000110100110100111001110000000110010101000001001111100001000011100101101100001011000011001010100101110101110110000101101000000111111101000000001011101010101100110111110100101000011011011010011011000100000010000110011001011001110100000010010110111100000110010011001111000010001111100100000100100010100100101000111111111111110010111000110110111001010001101001001010100111100101001011110111001000101101101100001011111100000100111000111111110100011011111110000100011100000000110001110101100111010000110100111001000111000100011100100000101001101