在 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

更新於:09-Aug-2019

647 次檢視

開啟您的 職業 生涯

完成課程並獲得認證

開始學習
廣告