在 C 語言中繪製 N 幅畫的方式,使得相鄰的畫作沒有相同的顏色
在這個問題中,我們給定 N 幅畫,還有 m 個顏色,我們可以用 m 個顏色繪製畫作,我們需要找出可以繪製畫作的方式,使得沒有相同顏色的畫作彼此相鄰。
程式輸出的值可能很大,處理這些值有點問題,因此我們將以標準模 109 +7 計算其答案。
找到方法數的公式是
Ways = n*(m-1)(n-1)
描述問題的示例,這需要繪畫數量 n 和顏色數量 m
輸入
n = 5 ,m = 6
輸出
3750
示例
#include <iostream> #include<math.h> #define modd 1000000007 using namespace std; unsigned long find(unsigned long x, unsigned long y, unsigned long p) { unsigned long res = 1; x = x % p; while (y > 0) { if (y & 1) res = (res * x) % p; y = y >> 1; x = (x * x) % p; } return res; } int ways(int n, int m) { return find(m - 1, n - 1, modd) * m % modd; } int main() { int n = 5, m = 6; cout<<"There are"<<ways(n, m)<<"ways"; return 0; }
輸出
There are 3750 ways
廣告