傳送門
我們以m
mm的兩種情況進行分析:
當m =1
m=1m=
1時:果斷輸出1
11當m
>
1m>1
m>
1時:我們可以用m−1
m-1m−
1條邊,將這n
nn個點組成的圖劃分為m
mm個部分,那麼這樣的話我們就考慮將這m
mm個部分進行排列,也就是m
mm的全排列→m!
→m!→m
!而我們一共有n−1
n-1n−
1條邊,要選出m−1
m-1m−
1條,即求組合:cm−
1n−1
c_^cm
−1n−
1當然這樣還是只能得到部分分,因為cm−
1n−1
c_^cm
−1n−
1實在太大了,需要邊運算邊模,但除法並不具有這樣的性質,故我們要將其轉化為乘法,我們知道除以乙個數,等於乘以這個數的乘法逆元,而再根據費馬小定理可以知道乙個數(x)
(x)(x
)的乘法逆元(y)
(y)(y)=x
模數−2
=x^=x
模數−2
而對於上述式子,可以通過快速冪迅速求解
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
const
int h=
1<<20;
#define ch cheap
#define xjq (int)1000000007
using namespace std;
inline ll read()
while
(s>=
'0'&&s<=
'9')
return d*f;
}ll n,m;
ll f[
(int
)1e5+5
];void
fac(
)ll gd
(ll x,ll y)
return ans;
}ll c()
intmain()
printf
("%lld\n",(
c())
*f[m]
%xjq);}
return0;
}
牛客國慶集訓派對Day1
a 看樣例過題 include include include include include using namespace std typedef long long ll typedef pairpii const int maxn 1e5 10 vectorg maxn int a 10 i...
牛客國慶集訓派對Day4
a 把b n include include include includeusing namespace std int main d 由於是個完全圖,選擇乙個權值最小的點,其他所有的點向它連線就行了。注意點為1的時候輸出0 include include include includeusing...
牛客國慶集訓派對Day2
題意 給出最大4096 64和64 4096的矩陣,其中有乙個矩陣只含有0和1,問你它們相乘所得到得矩陣所有元素異或 思路 一開始我想到的是能不能將01矩陣的一排都用二進位制表示,但是發現2的64次方大於4096,反而增大了複雜度,於是沒有做出這題,題解是將矩陣分塊,最多分成8塊,這樣01矩陣的種數...