package main import . "fmt" import . "math/big" const M = 1e9+7 func main() { var n,m int Scan(&n,&m) const Z int = 1e5 xs := make([]int, Z+1) xs[0] = 1 for i := 1; i < len(xs); i++ { xs[i] = xs[i-1]*i%M } ys := make([]int, len(xs)) ys[Z] = int(new(Int).ModInverse(NewInt(int64(xs[Z])), NewInt(M)).Int64()) for i := Z; i > 0; i-- { ys[i-1] = ys[i]*i%M } ans := 0 for i := n; i <= m; i++ { t := xs[i]*ys[n]%M*ys[i-n]%M ans = (ans+t)%M } Println(ans) } /* 考察 考察不要系 modコンビネーションの計算方法を知っているかを確認するだけの基礎問題 競プロ初級者入門向け */