绘制N幅画的方式,以使相邻的画在C ++中没有相同的颜色
在这个问题中,我们给了两个整数n和m,其中n是绘画数量,m是可用颜色的数量。我们的任务是创建一个程序,该程序将找到可以绘画方式的总数,以使连续绘画中的任何一种都不具有相同的颜色。
让我们举个例子来了解这个问题,
输入值
n = 3, m =3
输出结果
12
说明
P1 P2 P3 C1 C2 C3 C1 C3 C2 C1 C2 C1 C1 C3 C1 C2 C1 C2 C2 C3 C2 C2 C1 C3 C2 C3 C1 C3 C1 C3 C3 C2 C3 C3 C1 C2 C3 C2 C1
为了解决这个问题,我们可以用m种颜色绘画所有n幅画,现在可以使用n-1种颜色(除了用于绘画最后一幅画的颜色)绘画下一幅画。因此,总数为
n*(m-1)(n-1)
显示我们解决方案实施情况的程序,
示例
#include <iostream>
#define modd 1000000007
using namespace std;
unsigned long calcPower(unsigned long base, unsigned long power, unsigned long p){
unsigned long result = 1;
base = base % p;
while (power > 0) {
if (power & 1)
result = (result * base) % p;
power = power >> 1;
base = (base * base) % p;
}
return result;
}
int colorPainting(int n, int m){
return calcPower(m - 1, n - 1, modd) * m % modd;
}
int main(){
int n = 5, m = 7;
cout<<"给给定绘画上色的方法有: "<<colorPainting(n, m);
return 0;
}输出结果
给给定绘画上色的方法有: 9072
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短