1119 機械人走方格 V2 (組合數學)

2022-08-21 15:00:17 字數 958 閱讀 7489

m * n的方格,乙個機械人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10^9 + 7的結果。

input

第1行,2個數m,n,中間用空格隔開。(2 <= m,n <= 1000000)
output

輸出走法的數量 mod 10^9 + 7。
input示例

2 3
output示例

3
思路: 我們從左上走到右下 一共要往下走n-1次 往右走 m-1次 一共走了 n+m-2次但是不同的地方可以在向下走(n-1)次 或者向右走(m-1)次 所以我們在這裡有c(n+m-2,n-1)或者

c(n+m-2,m-1)種走法 這兩種是相同的。而我們在運算時 對組合數取餘 由於組合數存在除法, 而取餘不能再商之後取餘,所以這裡我們需要將除法轉換成乘法來做。

(( a!)/(b!)) % p等價於(a! * (b!)^-1)%p 而 b!^-1 成為b!的逆元由費馬小定理可知 b!^-1 = b^(p-2)  然後b^p-2 可以由快速冪來求 

ps:這裡的p要求為質數

1 #include2 #include3 #include4

using

namespace

std;

5 typedef long

long

ll;6

const ll mod = 1e9+7;7

ll m,n;

8 ll pow(ll a,ll b)//

快速冪 a的b次方 918

return

ans;19}

20 ll index(int x) //

求階乘取餘

2127 ll c(int a,int b)//

組合數

2836

intmain()

37

1119 機械人走方格 V2

1119 機械人走方格 v2 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 m n的方格,乙個機械人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10 9 7的結果。input 第1行,2個數m,n,中...

(組合 51nod 1119 機械人走方格 V2

傳送門 51nod 1119 機械人走方格 v2 m n的方格,乙個機械人從左上走到右下,只能向右或向下走。有多少種不同的走法?由於方法數量可能很大,只需要輸出mod 10 9 7的結果。收起第1行,2個數m,n,中間用空格隔開。2 m,n 1000000 輸出走法的數量 mod 10 9 7。2 ...

51nod 1119 機械人走方格 V2

乙個機械人從左上走到右下,每次只能往下或往右走,問最後到達右下時能有多少種方法。1.如果n,m小的話可以遞迴求解,但是這裡n,m太大,陣列開不了。我們取乙個小一點的n,m。用遞推填表,可以發現表是乙個楊輝三角。楊輝三角在第n行第m列的值為c n 1,m 1 可以得到 n,m 位置處應該填上c n 1...