Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import gcd
- class R:
- def __init__(self, m: int, n: int) -> None:
- if n == 0:
- raise ZeroDivisionError('Division by zero')
- else:
- self._num = m
- self._den = n
- def __lt__(self, other: 'R') -> 'R':
- if not isinstance(other, R):
- raise TypeError
- else:
- nok = (self._den * other._den) // gcd(self._den, other._den)
- if self._num * (nok // self._den) < other._num * (nok // other._den):
- return R(self._num, self._den)
- def __gt__(self, other: 'R') -> 'R':
- if not isinstance(other, R):
- raise TypeError
- else:
- nok = (self._den * other._den) // gcd(self._den, other._den)
- if self._num * (nok // self._den) > other._num * (nok // other._den):
- return R(self._num, self._den)
- def __str__(self) -> str:
- return f'{self._num}/{self._den}'
- class SetR:
- def __init__(self, *args: R) -> None:
- for i in range(len(args)):
- if isinstance(args[i], R):
- self.list = list(args)
- else:
- raise TypeError("Type isn't R")
- def append(self, other: R) -> list:
- self.list.append(other)
- return self.list
- def sort(self) -> list:
- self.list.sort()
- return self.list
- def __delitem__(self, key: int) -> list:
- del self.list[key]
- return self.list
- def __getitem__(self, item: int) -> R:
- return self.list[item]
- def __str__(self) -> str:
- l = [f'{self.list[i]}' for i in range(len(self.list))]
- return '[' + ', '.join(l) + ']'
- f, p, q = list(map(int, input().split()))
- s = SetR(R(1, 1))
- for i in range(1, 101):
- for j in range(1, 101):
- if (R(1, p) < R(i, j) < R(1, q)) and j < f and gcd(i, j) == 1 and i < j:
- s.append(R(i, j))
- del s[0]
- s.sort()
- print(*s, sep='\n')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement