Advertisement
Ikmik

cubic_py

Nov 6th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.58 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. import fractions
  4.  
  5. def ify(s):
  6.     if s == '-':
  7.         return -1
  8.     elif s == '0':
  9.         return 0
  10.     else:
  11.         return 1
  12.  
  13.  
  14. def add(a, b):
  15.     return a[0] * b[1] + b[0] * a[1], a[1] * b[1]
  16.  
  17.  
  18. def mul(a, b):
  19.     return a[0] * b[0], a[1] * b[1]
  20.  
  21.  
  22. def solve():
  23.     a1_s, a2_s = input().split()
  24.     b1_s, b2_s = input().split()
  25.     c1_s, c2_s = input().split()
  26.     d1_s, d2_s = input().split()
  27.  
  28.     sa = ify(a1_s[0])
  29.     a1 = int(a1_s[1:])
  30.     a2 = int(a2_s)
  31.     sb = ify(b1_s[0])
  32.     b1 = int(b1_s[1:])
  33.     b2 = int(b2_s)
  34.     sc = ify(c1_s[0])
  35.     c1 = int(c1_s[1:])
  36.     c2 = int(c2_s)
  37.     sd = ify(d1_s[0])
  38.     d1 = int(d1_s[1:])
  39.     d2 = int(d2_s)
  40.  
  41.     a = sa * (2 ** a1), 3 ** a2
  42.     b = sb * b1, 3 ** b2
  43.     c = sc * c1, 3 ** c2
  44.     d = sd * (2 ** d1), 3 ** d2
  45.  
  46.     answ = set()
  47.     for s in range(-1, 2, 2):
  48.         for p2 in range(d1 + 1):
  49.             for q2 in range(a1 + 1):
  50.                 for p3 in range(max(a2, b2, c2, d2) + 1):
  51.                     for q3 in range(max(a2, b2, c2, d2) + 1):
  52.                         p = s * (2 ** p2) * (3 ** p3)
  53.                         q = (2 ** p3) * (3 ** q3)
  54.                         f = (p, q)
  55.                         ans = mul(a, mul(mul(f, f), f))
  56.                         ans = add(ans, mul(b, mul(f, f)))
  57.                         ans = add(ans, mul(c, f))
  58.                         ans = add(ans, d)
  59.                         if ans[0] == 0:
  60.                             answ.add(fractions.Fraction(f[0], f[1]))
  61.  
  62.     print(len(answ), *answ)
  63.  
  64.  
  65. t = int(input())
  66. for i in range(t):
  67.     solve()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement