Trong bài toán này, bạn được đưa cho N bức tranh và chúng ta có m màu có thể tạo thành bức tranh và chúng ta cần tìm số cách để chúng ta có thể vẽ bức tranh sao cho không bức tranh nào cùng màu với nhau.
Đầu ra của chương trình có thể có các giá trị rất lớn và việc chuyển các giá trị này là một vấn đề nhỏ, vì vậy chúng tôi sẽ tính toán câu trả lời của nó trong mô-đun chuẩn 10 9 +7.
Công thức để tìm số cách là:
Ways = n*(m-1)(n-1)
Ví dụ để mô tả vấn đề, điều này sẽ cần số bức tranh n và số màu m:
Đầu vào
n = 5 ,m = 6
Đầu ra
3750
Ví dụ
#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; }
Đầu ra
There are 3750 ways