ในปัญหานี้ คุณได้รับภาพวาด N และเรามีสี m ที่เราสามารถใช้วาดภาพได้ และเราจำเป็นต้องค้นหาจำนวนวิธีที่เราสามารถวาดภาพระบายสีได้ โดยจะไม่มีภาพวาดสีเดียวกันที่เชื่อมโยงกัน
เอาต์พุตของโปรแกรมสามารถมีค่าขนาดใหญ่ได้ และการแจกค่าเหล่านี้เป็นปัญหาเล็กน้อย ดังนั้นเราจะคำนวณคำตอบในโมดูลมาตรฐาน 10 9 +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