Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

วิธีในการวาดภาพ N โดยที่ภาพวาดที่อยู่ติดกันจะไม่มีสีเหมือนกันในการเขียนโปรแกรม C


ในปัญหานี้ คุณได้รับภาพวาด 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