Minimum Players required to win the game in C++

C++Server Side ProgrammingProgramming

Problem statement

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

Please note that any wrong answer leads to elimination of the player

Example

If N = 5 and K = 2 then answer is 62.

Algorithm

  • 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: K(Kn -1) / K -1

Example

#include <iostream>
#include <cmath>
#define MOD 1000000007
using namespace std;
long long int power(long long a, long long b) {
   long long res = 1;
   while (b) {
      if (b & 1) {
         res = res * a;
         res = res % MOD;
      }
      b = b / 2;
      a = a * a;
      a = a % MOD;
   }
   return res;
}
long long getMinPlayer(long long n, long long k) {
   long long num = ((power(k, n) - 1) + MOD) % MOD;
   long long den = (power(k - 1, MOD - 2) + MOD) % MOD;
   long long ans = (((num * den) % MOD) * k) % MOD;
   return ans;
}
int main() {
   long long n = 5, k = 2;
   cout << "Minimum pairs = " << getMinPlayer(n, k) << endl;
   return 0;
}

Output

When you compile and execute above program. It generates following output −

Minimum pairs = 62
raja
Published on 22-Nov-2019 11:17:15
Advertisements