Cod sursa(job #711512)

Utilizator danalex97Dan H Alexandru danalex97 Data 12 martie 2012 11:50:18
Problema Matrice5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
using namespace std;

#define MOD 10007

inline int pwr2(int x,int y)
{ int z=(y<1)?0:pwr2(x,y/2); return (y==1) ?  1 : ( (y%2) ? ((z*z%MOD)*x)%MOD : (z*z%MOD ) ) ; }

int pwr(int x,int y)
{
	if (y==0)
		return 1;
	else
	{
		int rez=pwr(x,y/2);
		if (y%2!=0)
			return ((x*rez)%MOD*rez)%MOD;
		else
			return (rez*rez)%MOD;
	}
}

int main()
{
	freopen("matrice5.in","r",stdin);
	freopen("matrice5.out","w",stdout);
	
	int T,N,M,P,K;
	scanf("%d",&T);
	for (int i=1;i<=T;++i)
	{ 
		scanf("%d%d%d%d",&N,&M,&P,&K); 
		printf("%d\n",(pwr(P,N*M)*pwr(K,(--N)*(--M)))%MOD);
	}
	
	return 0;
}