组合数学真难啊。。预备知识需要的太多了
东拼西凑来学习
证明网上很多,我也是这么学来的
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <cstring>
#include <vector>
#include <set>
#include <cmath>
#include <map>
#include <sstream>
#define LL long long
#define INF 0x3f3f3f3f
#define mod 20100713
const int maxn = 1000000;
using namespace std;
LL fac[maxn];
LL powermod(LL a, LL p){
LL ans = 1;
while(p){
if(p & 1)
ans = ans * a % mod;
p /= 2;
a = a * a % mod;
}
return ans;
}
int main(){
fac[0] = 1;
for(int i=1; i<maxn; i++)
fac[i] = fac[i-1] * i % mod;
int T;
scanf("%d",&T);
while(T--){
LL n,k;
scanf("%lld%lld",&n,&k);
printf("%lld\n",(powermod(k+1,n-k)-powermod(k,n-k) + mod) % mod *fac[k] % mod);
}
}