fork download
  1. nt=int(input())
  2. s=[]
  3. for it in range(nt):
  4. s.append(input())
  5.  
  6. for it in range(nt):
  7. si=s[it]
  8. si="".join(si.split())
  9. i=si.find('/')
  10. if i==-1:
  11. dzielna=float(si)
  12. dzielnik=1
  13. else:
  14. #sprawdzamy czy dzielnik jest l. calkowita, a jak nie to mnozymy
  15. strd=si[i+1:]
  16. if '.' in strd:
  17. exp=10**(len(strd)-1-strd.find('.'))
  18. else:
  19. exp=1
  20.  
  21. dzielna=float(si[:i])*exp
  22. dzielnik=int( float(si[i+1:])*exp )
  23.  
  24. znak=''
  25. if dzielnik*dzielna<0:
  26. znak='-'
  27. dzielnik=abs(dzielnik)
  28. dzielna=abs(dzielna)
  29.  
  30. wynik=''
  31. lcyfpk=0
  32. div=(dzielna//dzielnik)
  33. re=(dzielna%dzielnik)
  34. wynik+=str(int(div))
  35.  
  36. if re!=0: wynik+=','
  37. wynikokr=''
  38. dire={}
  39.  
  40. while (re>0) and (re not in dire):
  41. dire[re]=lcyfpk
  42. re*=10
  43. div=int(re//dzielnik)
  44. wynik+=str(int(div))
  45. wynikokr+=str(int(div))
  46. re=int(re%dzielnik)
  47. lcyfpk+=1
  48.  
  49. if(re!=0):
  50. srok=wynikokr[dire[re]:]
  51. wprzedp=wynik[:wynik.find(',')]
  52. wpoprz=wynik[wynik.find(','):]
  53. opos=wpoprz.find(srok)
  54. wynik=wprzedp+wpoprz[:opos]+'('+srok+')'
  55.  
  56. wynik=znak+wynik
  57. print(wynik)
  58.  
Success #stdin #stdout 0.04s 9372KB
stdin
8
1/103
10/131
103/-07
5
-103/-1
0/100
77/78
-99/909
stdout
0,(0097087378640776699029126213592233)
0,(0763358778625954198473282442748091603053435114503816793893129770992366412213740458015267175572519083969465648854961832061068702290)
-14,(714285)
5
103
0
0,9(871794)
-0,(1089)