牛客IOI赛制测试赛
C 选择颜色
题目描述
链接:https://ac.nowcoder.com/acm/contest/3211/C
来源:牛客网
n个人排成一个环形,每个人要从c种颜色中选择一个。
牛牛希望相邻的人选择的颜色是不同的
问有多少种方案。
输出方案数对10007取模的结果。
人是有顺序的,环旋转同构算不同的方案。
输入描述
输入只有一行,包含用空格分开的两个整数,表示n和c。
输出描述
输出一行一个整数,表示答案。
示例1
输入
4 3
输出
18
示例2
输入
1000000000 100
输出
726
说明
对10007取模。
备注
对于所有数据: 3 <= n <= 1000000000, 3 <= c <= 100
20分: c <= 3
40分: c <= 4
70分: n <= 10000
解题思路
AC代码
#include<bits/stdc++.h>
#define mod 10007
using namespace std;
long long power(long long a,long long b)
{
long long ans=1;
while(b)
{
if(b&1)
ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
int main()
{
long long n,m,ans;
scanf("%lld%lld",&n,&m);
m--;
ans=power(m,n);
if(n&1)
ans-=m;
else
ans+=m;
ans=(ans+mod)%mod;
printf("%lld\n",ans);
return 0;
}