题干:
描述
小明有n种珠宝,每种无限个,他想从这些珠宝中取出m个,编成手链(长链哦),并按顺序排列起来,为了好看,相邻的珠宝不能相同。小明想知道有多少种排列的方法。
输入
第一行一个整数t代表样例个数第二行有两个正整数m,n。
1 ≤ m, n ≤ 1000
输出
第一行一个整数,表示在n种珠宝中取出m个的排列方案数模1000000007后的值
输入样例 1
1
3 3
输出样例 1
12
解题报告:
据说n和m的输入顺序是个坑?
AC代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod = 1000000007;
ll m , n;
ll qpow(ll a,ll k) {ll res = 1;while(k) {if(k&1) {res = (res*a)%mod;}k>>=1;a=(a*a)%mod;}return res;
}int main()
{int t;cin>>t;while(t--) {scanf("%lld%lld",&m,&n);ll ans = (n%mod)*(qpow(n-1,m-1))%mod;printf("%lld\n",ans%mod);}return 0 ;
}