Advertisement
maxim_shlyahtin

Task_U

Nov 15th, 2020
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 KB | None | 0 0
  1. from math import gcd
  2.  
  3.  
  4. class R:
  5.  
  6.     def __init__(self, m: int, n: int) -> None:
  7.         if n == 0:
  8.             raise ZeroDivisionError('Division by zero')
  9.         else:
  10.             self._num = m
  11.             self._den = n
  12.  
  13.     def __lt__(self, other: 'R') -> 'R':
  14.         if not isinstance(other, R):
  15.             raise TypeError
  16.         else:
  17.             nok = (self._den * other._den) // gcd(self._den, other._den)
  18.             if self._num * (nok // self._den) < other._num * (nok // other._den):
  19.                 return R(self._num, self._den)
  20.  
  21.     def __gt__(self, other: 'R') -> 'R':
  22.         if not isinstance(other, R):
  23.             raise TypeError
  24.         else:
  25.             nok = (self._den * other._den) // gcd(self._den, other._den)
  26.             if self._num * (nok // self._den) > other._num * (nok // other._den):
  27.                 return R(self._num, self._den)
  28.  
  29.     def __str__(self) -> str:
  30.         return f'{self._num}/{self._den}'
  31.  
  32.  
  33. class SetR:
  34.  
  35.     def __init__(self, *args: R) -> None:
  36.         for i in range(len(args)):
  37.             if isinstance(args[i], R):
  38.                 self.list = list(args)
  39.             else:
  40.                 raise TypeError("Type isn't R")
  41.  
  42.     def append(self, other: R) -> list:
  43.         self.list.append(other)
  44.         return self.list
  45.  
  46.     def sort(self) -> list:
  47.         self.list.sort()
  48.         return self.list
  49.  
  50.     def __delitem__(self, key: int) -> list:
  51.         del self.list[key]
  52.         return self.list
  53.  
  54.     def __getitem__(self, item: int) -> R:
  55.         return self.list[item]
  56.  
  57.     def __str__(self) -> str:
  58.         l = [f'{self.list[i]}' for i in range(len(self.list))]
  59.         return '[' + ', '.join(l) + ']'
  60.  
  61.  
  62. f, p, q = list(map(int, input().split()))
  63. s = SetR(R(1, 1))
  64. for i in range(1, 101):
  65.     for j in range(1, 101):
  66.         if (R(1, p) < R(i, j) < R(1, q)) and j < f and gcd(i, j) == 1 and i < j:
  67.             s.append(R(i, j))
  68. del s[0]
  69. s.sort()
  70. print(*s, sep='\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement