import math def factorial(n): if n == 0 or n == 1: return 1 res = 1 for i in range(2, n + 1): res *= i return res def comb(n, k): if k > n: return 0 return factorial(n) // (factorial(k) * factorial(n - k)) def find_max_permutation_length(a, b, c): n = a + b - 1 # Maksymalna długość permutacji w przypadku szczególnym return n def count_permutations(n, a, p): return comb(n, a) % p def main(): # Wczytanie danych wejściowych a, b, c, p = map(int, input().split()) # Obliczanie najdłuższej permutacji n = find_max_permutation_length(a, b, c) # Liczenie permutacji modulo p num_permutations = count_permutations(n, a, p) # Wypisanie wyniku print(n, num_permutations) if __name__ == "__main__": main()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import math def factorial(n): if n == 0 or n == 1: return 1 res = 1 for i in range(2, n + 1): res *= i return res def comb(n, k): if k > n: return 0 return factorial(n) // (factorial(k) * factorial(n - k)) def find_max_permutation_length(a, b, c): n = a + b - 1 # Maksymalna długość permutacji w przypadku szczególnym return n def count_permutations(n, a, p): return comb(n, a) % p def main(): # Wczytanie danych wejściowych a, b, c, p = map(int, input().split()) # Obliczanie najdłuższej permutacji n = find_max_permutation_length(a, b, c) # Liczenie permutacji modulo p num_permutations = count_permutations(n, a, p) # Wypisanie wyniku print(n, num_permutations) if __name__ == "__main__": main() |