Given two integers n and m, where n represent some paintings numbered from 1 to n and m represent some colours 1 to m with unlimited amount. The task is to find the number of ways to paint the paintings such that no two consecutive paintings have the same colors.
Note: Answer must be calculated in modulo 10^9 +7 as answer can be very large.
Input: n = 4, m = 2 Output: 2 Input: n = 4, m = 6 Output: 750
Asked in : National Instruments
The total number of given color is m and the total paintings are from 1 to n. As per the condition of no two adjacent painting having the same color, first painting can be painted by anyone out of n colors and the rest of any painting can be painted by any of n-1 color except the color used for the painting just preceding that. Hence if we derive the solution for total number of ways,
n * (m-1)^(n-1) is the actual answer.
Now, this can be either calculated by simple iteration or by the method of efficient power calculation in O(logn) time.
Below is the implementation of the above approach:
// If y is odd, multiply
// x with result
if ($y & 1)
$res = ($res * $x) % $p;
// y must be even now
// y = $y/2
$y = $y >> 1;
$x = ($x * $x) % $p;
// Function to calculate the number of ways
function ways($n, $m)
// Answer must be modulo of 10^9 + 7
return (power($m – 1, $n – 1,
$modd) * $m ) % $modd;
// Driver code
$n = 5;
$m = 5;
echo ways($n, $m);
// This code is contributed
// by Arnab Kundu
- Ways to paint stairs with two colors such that two adjacent are not yellow
- Ways to color a 3*N board using 4 colors
- Ways to color a skewed tree such that parent and child have different colors
- Number of ways to form an array with distinct adjacent elements
- Ways to arrange Balls such that adjacent balls are of different types
- Maximum area of triangle having different vertex colors
- Minimum steps to color the tree with given colors
- Number of strictly increasing Buildings from right with distinct Colors
- Permutations of string such that no two vowels are adjacent
- Check whether given three numbers are adjacent primes
- Maximum sum of difference of adjacent elements
- How to evenly put N objects into N places with adjacent moves
- Making zero array by decrementing pairs of adjacent
- Rearrange characters in a string such that no two adjacent are same using hashing
- Generate permutations with only adjacent swaps allowed
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.