Advertisement
Guest User

Untitled

a guest
Oct 19th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. import math
  2. tests = int(input())
  3. letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
  4. 'w', 'x', 'y', 'z']
  5.  
  6. def getLetter(B, initpos, power, X):
  7. #print("pos inicial",initpos, "potencia", power)
  8.  
  9. relative = X-initpos+1
  10. #print("relativo", relative)
  11.  
  12. total_agrupamentos = pow(B, power)
  13. agrupamento = math.ceil(relative/power)
  14. casa_do_agrupamento = ((relative-1) % power)
  15. #print(total_agrupamentos, "agrupamentos de", power)
  16. #print("achar a letra na casa", casa_do_agrupamento, "do agrupamento", agrupamento)
  17.  
  18. resp = ''
  19. for i in range(1, casa_do_agrupamento+2):
  20. #print("agrupamento", agrupamento)
  21. aux = int(total_agrupamentos//B)
  22. #print("aux", aux)
  23. group = math.ceil(agrupamento/aux)
  24. #print("group", group)
  25. resp = letters[group-1]
  26. agrupamento -= (group-1)*aux
  27. total_agrupamentos = aux
  28.  
  29. print(resp)
  30.  
  31.  
  32. for k in range(tests):
  33. B, X = map(int, input().split())
  34.  
  35. aux = 0
  36. count = 0
  37.  
  38. while aux <= X:
  39. count += 1
  40. aux += count * pow(B, count)
  41.  
  42. # count = math.ceil(math.log(X,B))
  43.  
  44. aux -= count * pow(B, count)
  45. getLetter(B, aux, count, X)
  46.  
  47. # a b aa ab ba bb
  48. # aaa aab aba abb baa bab bba bbb
  49. # 012 345 678 901 234 567 890 123
  50.  
  51. # aaaa aaaa aaaa aaaa baaa baaa baaa baaa caaa caaa caaa caaa daaa daaa daaa daaa
  52.  
  53.  
  54. # a b c aa ab ac ba bb bc ca cb cc aaa aab aac aba
  55. # 0 1 2 34 56 78 90 12 34 56 78 90 123 456<< 789 012
  56.  
  57. # a b c d aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd aaa
  58. # 0 1 2 3 45 67 89 01 23 45 67 89 01 23 45 67 89 01 23 45
  59.  
  60. # aa ab ac ad ba bb bc bd ca cb cc cd da db dc dd
  61. # 01 23 45 67 89 01 23 45 67 89 01 23 45 67 89 01
  62. # aaaa aaab aaac aaad aaba aabc aabd aaca aacb aacc aacd aada aadb aadc aadd abaa
  63. # abbb abbc abcc abcd baaa baab babb babc bacc bacd badd bbaa bbab bbac bbad bbba bbbb bbbc bbbd
  64. # bbca bbcb bbcc bbcd bbda bbdb bbdc bbdd
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement