Pagini recente » Borderou de evaluare (job #3282684) | Profil tryharderul | Profil tryharderul | Borderou de evaluare (job #2958422) | Cod sursa (job #3307352)
#include <iostream>
#define MOD 10007
using namespace std;
int pwu(int n, int p) {
if(p == 0)
return 1;
if(p % 2)
return 1ll * n * pwu(n, p - 1) % MOD;
int temp = pwu(n, p / 2);
return 1ll * temp * temp % MOD;
}
int main() {
freopen("matrice5.in", "r", stdin);
freopen("matrice5.out", "w", stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int t; cin >> t;
while(t --) {
int n, m, p, k; cin >> n >> m >> p >> k;
cout << 1ll * pwu(p * k % MOD, (n - 1) * (m - 1)) * pwu(p, n + m - 1) % MOD << '\n';
}
}