python3系ではint型の整数の大きさに制限はないとあったのですが、なぜWAしてしまうのでしょうか?
factorial() は整数を返しますが / 演算結果は浮動小数点数です。
浮動小数点数になった時点で有効桁数を超えれば正しい結果は得られません。
整数の割り算の結果を整数で求めるには / でなく // を使います。
Python
1# ans = int(math.factorial(l-1) / (math.factorial(11) * math.factorial(l-12)))
2ans = math.factorial(l-1) // (math.factorial(11) * math.factorial(l-12))
ただ math.factorial は、バージョン 3.9 で非推奨になっていますから(l は見にくいため n にしています)
Python
1from functools import reduce
2from operator import mul
3
4n = int(input())
5ans = reduce(mul, range(1, n)) // (reduce(mul, range(1, 12)) * reduce(mul, range(1, n-11), 1))
6print(ans)
とするか、少し掛け算の回数を減らして
Python
1from functools import reduce
2from operator import mul
3
4n = int(input())
5a = set(range(1, n))
6b = set(range(1, n-11))
7ans = reduce(mul, a - b) // (reduce(mul, range(1, 12)) * reduce(mul, b - a, 1))
8print(ans)
とするか
Python
1import math
2
3n = int(input())
4ans = math.comb(n, 12) * 12 // n
5print(ans)
とした方が良いでしょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。