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

代码:

#include <bits/stdc++.h>
using namespace std;
long long n,c;
long long mod=10007;
int qpow(int a,int b)
{
    int ans=1;
    while(b)
    {
        if(b&1)
            ans=ans*a%mod;
        a=a*a%mod;
        b>>=1;
    }
    return ans;
}
int main()
{
	cin>>n>>c;
	long long s;
	s=qpow(c-1,n);
	if(n%2==0)
	s+=c-1;
	else
	s-=c-1;
	cout<<s%mod;
}

 

全部评论

相关推荐

内向的柠檬精在研究求...:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务