给定N个问题,每个问题有K个选项,其中1 <= N <= 1000000000和1 <= K <=1000000000。任务是确定所有1 <= i < = k以赢得游戏。您必须最小化播放器总数的总和,并以109 + 7模输出。
请注意,任何错误答案都会导致玩家被淘汰
如果N = 5且K = 2,则答案为62。
为了解决第N个问题,需要K个玩家。
为了解决第(N-1)个问题,需要K2玩家。
同样地,要解决第一个问题,需要KN玩家。
因此,我们的问题简化为找到GP项之和K + K 2 +…+ KN等于:K(K n -1)/ K -1
#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;
}输出结果
当您编译并执行上述程序时。它产生以下输出-
Minimum pairs = 62