题解 | #旋律的总数#
旋律的总数
https://ac.nowcoder.com/acm/contest/20111/A
题解:
先放代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll mod=1e9+7;
ll T,n,m;
ll quickPower(ll a, ll b)
{
ll ans = 1,base=a;
while(b)
{
if(b & 1)
ans = ans*base%mod;
base = base*base%mod;
b >>= 1;
}
return ans%mod;
}
int main()
{
scanf("%lld" ,&T);
while(T--)
{
scanf("%lld%lld" ,&n ,&m);
cout << quickPower(m,n-1) << endl;
}
return 0;
}
- 本题要用到快速幂,不会的朋友可以自己在百度搜索,然后自学一下,挺简单的。
好,我们开始讲题:
- 根据题目意思,k的范围是1—(m-1)的,所以每一位就有m种情况。
- 然后呢,一共有n位数字,所以,一共是 m 的 n 次方 种数列
- 最后,因为每个数列会重复 m 次,所以,我们只要算出 m 的 (n-1) 次方 就可以了