Cod sursa(job #1465887)

Utilizator multislashRobert Morosanu multislash Data 28 iulie 2015 10:53:56
Problema Matrice5 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
using namespace std;
int t,k,m,n,p,f1,f2;
int rp(int a,int b)
{
    a=a%10007;
    int nr;
    if(b==1) return a%10007;
    if(b%2==0)
    {
        nr=rp(a,b/2);
        return nr*nr%10007;
    }
    else
    {
        nr=rp(a,b/2);
        return ((nr*nr)%10007)*a%10007;
    }
}
int main()
{
    freopen("matrice5.in","r",stdin);
    freopen("matrice5.out","w",stdout);
    scanf("%d",&t);
    for(int i=1;i<=t;++i)
    {
        scanf("%d%d%d%d",&n,&m,&p,&k);
        if(m==n&&m==1) printf("%d\n",p);
        else if(m==1) printf("%d\n",rp(p,n)*rp(k,n-1)%10007);
        else if(n==1) printf("%d\n",rp(p,m)*rp(k,m-1)%10007);
        else {
        f1=rp(p,m*n);
        f2=rp(k,(m-1)*(n-1));
        printf("%d\n",f1*f2%10007);
        }
    }
    return 0;
}