HDU 5698 瞬間移動(組合數,逆元)

2021-09-08 04:16:54 字數 823 閱讀 5138

x和y分開考慮,在(1,1)到(n,m)之間可以選擇走i步。就需要選i步對應的行c(n-2,i)及i步對應的列c(m-2,i)。相乘起來。 假設$m\leq n$

$$\sum_^ c_^i\cdot c_^i=\sum_^ c_^i\cdot c_^=c_^$$

然後標程裡求i的階乘的逆是預處理的,主要這句:

$$f[i]=(m-m/i)\cdot f[m\%i]\%m$$

這裡f即i的逆元,為什麼可以這麼求呢?

首先這裡的m必須是質數。

$$m=k\cdot i+r \equiv 0 \pmod m$$

兩邊乘上$i^\cdot r^$(如果m不是質數,r就可能為0)

$$\begin k\cdot r^+i^ &\equiv& 0 &\pmod m\\

i^ &\equiv& -k\cdot r^ &\pmod m\\

i^ &\equiv& m-\left\lfloor\frac\right\rfloor\cdot \left(m\bmod i\right)^ &\pmod m \end$$

**

#

include

#define m 1000000007

#define n 200001

#define ll long long

ll fac[n]=,inv[n]=,f[n]=;

int n,m;

ll c(ll a,ll b)

int main()

while(~scanf("%d%d",&n,&m))

printf("%lld\n",c(m+n-4,m-2));

}

hdu 5698 瞬間移動

有乙個無限大的矩形,初始時你在左上角 即第一行第一列 每次你都可以選擇乙個右下方格仔,並瞬移過去 如從下圖中的紅色格仔能直接瞬移到藍色格仔 求到第n n n n行第m m m列的格仔有幾種方案,答案對1000000007 1000000007 1000000007取模。input多組測試資料。兩個整...

HDU 5698 瞬間移動 數學

有乙個無限大的矩形,初始時你在左上角 即第一行第一列 每次你都可以選擇乙個右下方格仔,並瞬移過去 如從下圖中的紅色格仔能直接瞬移到藍色格仔 求到第n行第m列的格仔有幾種方案,答案對1000000007取模。多組測試資料。兩個整數n,m 2 n,m 100000 乙個整數表示答案 4 5數學題先打表,...

hdu 5698瞬間移動(組合數取模 盧卡斯定理)

資料範圍 2 n,m 100000,mod 1000000007。思路 打表可以發現這個方法數是乙個楊輝三角。根據楊輝三角的性質,可以知道楊輝三角裡面第n行,第m列的數值為c n 1,m 1 所以我們只要將題目所給的行列轉化一下,然後計算組合數即可。由於n,m給的範圍比較大。不能直接計算,這是就用到...