#include <iostream> //ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); #include <cstring> #include <ctime> #include <cstdlib> #include <algorithm> #include <vector> #include <cmath> #include <queue> #include <set> #include <stack> #include <map> #include <unordered_set> #include <unordered_map> #include <iomanip> #define endl '\n' using namespace std; #define int long long typedef pair<int, int> pii; const int N = 2e5 + 5; const int mod = 1e9 + 7; int inv[N]={1,1}; int invf[N]={1,1}; int f[N]; int qpow(int base, int power,int mod) { int result = 1; while (power > 0) { if (power & 1) {//此处等价于if(power%2==1) result = result * base % mod; } power >>= 1;//此处等价于power=power/2 base = (base * base) % mod; } return result; } int C(int n, int m) { return f[n] * invf[m] % mod * invf[n-m] % mod; } void init() { for(int i=2;i<N;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod; for(int i=2;i<N;i++)invf[i]=(mod-mod/i)*inv[mod%i]%mod; for(int i=1;i<N;i++)invf[i]=invf[i]*invf[i-1]%mod; f[0] = 1; for (int i = 1;i <= N;i++) f[i] = f[i - 1]%mod * i % mod; } void solve() { init(); int n, k; cin >> n >> k; int ans = (C(2 * n, n)) * qpow(k, n,mod) % mod; cout << ans; } signed main() { ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0); int T = 1; cin >> T; while (T--) { solve(); } return 0; }
第十五届吉林省赛(K. Bracket Sequence)
最新推荐文章于 2024-05-21 23:16:53 发布