Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Contador de enteros congruentes r (d) en rango
- def congruentesEnRango(r: int, d: int, m: int, M: int,
- strictGreater: bool = False,
- strictLess: bool = False) -> list:
- """
- Requiere r en N0, d en N, m, M en Z y m < M.
- Devuelve la lista de enteros con congruencia r módulo d en el intervalo entre m y M.
- Si este intervalo es abierto o cerrado en uno o ambos de sus extremos queda determinado por strictGreater y strictLess.
- Por defecto, el intervalo es [m; M].
- """
- m += strictGreater
- m += (m%d > r%d)*d - (m%d) + r%d
- M -= strictLess
- c = (M-m >= 0) * ((M-m)//d + 1)
- return (c > 0) * [m + i*d for i in range(c)]
- def nCongruentesEnRango(r: int, d: int, m: int, M: int,
- strictGreater: bool = False,
- strictLess: bool = False) -> int:
- """
- Requiere r en N0, d en N, m, M en Z y m < M.
- Devuelve la cantidad de enteros con congruencia r módulo d en el intervalo entre m y M.
- Si este intervalo es abierto o cerrado en uno o ambos de sus extremos queda determinado por strictGreater y strictLess.
- Por defecto, el intervalo es [m; M].
- """
- m += strictGreater
- m += (m%d > r%d)*d - (m%d) + r%d
- M -= strictLess
- return (M-m >= 0) * ((M-m)//d + 1)
- def nParesEnRango(m: int, M: int,
- strictGreater: bool = False,
- strictLess: bool = False) -> int:
- """
- Requiere r en N0, d en N, m, M en Z y m < M.
- Devuelve la cantidad de enteros pares en el intervalo entre m y M.
- Si este intervalo es abierto o cerrado en uno o ambos de sus extremos queda determinado por strictGreater y strictLess.
- Por defecto, el intervalo es [m; M].
- """
- return nCongruentesEnRango(0, 2, m, M, strictGreater, strictLess)
- def nImparesEnRango(m: int, M: int,
- strictGreater: bool = False,
- strictLess: bool = False) -> int:
- """
- Requiere r en N0, d en N, m, M en Z y m < M.
- Devuelve la cantidad de enteros impares en el intervalo entre m y M.
- Si este intervalo es abierto o cerrado en uno o ambos de sus extremos queda determinado por strictGreater y strictLess.
- Por defecto, el intervalo es [m; M].
- """
- return nCongruentesEnRango(1, 2, m, M, strictGreater, strictLess)
- if __name__ == '__main__':
- m, M, strictGreater, strictLess = 100, 200, True, False # Rango (100, 200]
- listaPares = congruentesEnRango(0, 2, m, M, strictGreater, strictLess)
- listaImpares = congruentesEnRango(1, 2, m, M, strictGreater, strictLess)
- nPares = nParesEnRango(m, M, strictGreater, strictLess)
- nImpares = nImparesEnRango(m, M, strictGreater, strictLess)
- print(nPares, nImpares, listaPares, listaImpares)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement