116AC - ABC065C: Reconciled?
ABC065-C (300 points)
問題
犬が 匹, 猿が 匹いるとき, 犬同士, 猿同士が隣り合わない並べ方の総数を求める. ただし, 犬同士, また猿同士は互いに区別する.
方針
- 犬同士, 猿同士が隣り合わないように並べられる ⇔ 犬の数と猿の数の違いが 以内である
- あとはただの順列の数え上げ.
import math # input N, M = map(int, input().split()) if abs(N - M) >= 2: print(0) elif abs(N - M) == 1: ans = (math.factorial(N) * math.factorial(M)) % (10 ** 9 + 7) print(ans) else: ans = (math.factorial(N) * math.factorial(M) * 2) % (10 ** 9 + 7) print(ans)