# Minimum Players required to win the game

• Last Updated : 14 Jun, 2021

Given N questions and K options for each question, where and . The task is to determine sum of total number of player who has attempted ith question for all to win the game anyhow. You have to minimize the sum of total number of player and output it modulo 109+7.

Examples:

Input: N = 3, K = 3
Output: 39

Input: N = 5, K = 2
Output: 62

Approach:

• To solve Nth question K players are needed.
• To solve (N-1)th question K2 players are needed.
• Similarly moving onwards, To solve 1st question KN players are needed.

So, our problem reduces to finding the sum of GP terms K + K2 + … + KN which is equal to
Now we can use Fermatâ€™s Little Theorem to get the required answer modulo with 109+7.

Below is the implementation of above approach:

## C++

 // C++ program to find minimum players// required to win the game anyhow#include using namespace std;#define mod 1000000007 // function to calculate (a^b)%(10^9+7).long long int power(long long int a, long long int b){    long long int res = 1;    while (b) {        if (b & 1) {            res *= a;            res %= mod;        }        b /= 2;        a *= a;        a %= mod;    }    return res;} // function to find the minimum required playerlong long int minPlayer(long long int n, long long int k){     // computing the nenomenator    long long int num = ((power(k, n) - 1) + mod) % mod;     // computing modulo inverse of denominator    long long int den = (power(k - 1, mod - 2) + mod) % mod;     // final result    long long int ans = (((num * den) % mod) * k) % mod;     return ans;} // Driver codeint main(){     long long int n = 3, k = 3;     cout << minPlayer(n, k);     return 0;}

## Java

 //Java program to find minimum players//required to win the game anyhowpublic class TYU {         static long  mod =  1000000007;     //function to calculate (a^b)%(10^9+7).     static long power(long a, long b)     {      long res = 1;      while (b != 0) {          if ((b & 1) != 0) {              res *= a;              res %= mod;          }          b /= 2;          a *= a;          a %= mod;      }      return res;     }      //function to find the minimum required player     static long minPlayer(long n, long k)     {       // computing the nenomenator      long num = ((power(k, n) - 1) + mod) % mod;       // computing modulo inverse of denominator      long den = (power(k - 1, mod - 2) + mod) % mod;       // final result      long ans = (((num * den) % mod) * k) % mod;       return ans;     }      //Driver code    public static void main(String[] args) {                  long n = 3, k = 3;          System.out.println(minPlayer(n, k));    }}

## Python 3

 # Python 3 Program  to find minimum players#  required to win the game anyhow # constantmod = 1000000007 # function to calculate (a^b)%(10^9+7).def power(a, b) :    res = 1     while(b) :        if (b & 1) :            res *= a            res %= mod         b //= 2        a *= a        a %= mod     return res # function to find the minimum required playerdef minPlayer(n, k) :     # computing the nenomenator    num = ((power(k, n) - 1) + mod) % mod     # computing modulo inverse of denominator    den = (power(k - 1,mod - 2) + mod) % mod     # final result    ans = (((num * den) % mod ) * k) % mod     return ans # Driver Codeif __name__ == "__main__" :     n, k = 3, 3     print(minPlayer(n, k)) # This code is contributed by ANKITRAI1

## C#

 // C# program to find minimum players// required to win the game anyhowusing System;class GFG{ static long mod = 1000000007; // function to calculate (a^b)%(10^9+7).static long power(long a, long b){long res = 1;while (b != 0){    if ((b & 1) != 0)    {        res *= a;        res %= mod;    }    b /= 2;    a *= a;    a %= mod;}return res;} // function to find the minimum// required playerstatic long minPlayer(long n, long k){     // computing the nenomenator    long num = ((power(k, n) - 1) + mod) % mod;         // computing modulo inverse    // of denominator    long den = (power(k - 1, mod - 2) + mod) % mod;         // final result    long ans = (((num * den) % mod) * k) % mod;         return ans;} // Driver codepublic static void Main(){    long n = 3, k = 3;     Console.WriteLine(minPlayer(n, k));}} // This code is contributed// by Shashank

## PHP

 

## Javascript

 

Output:

39

Time Complexity: O(log(n))

My Personal Notes arrow_drop_up