Cod sursa(job #1095334)

Utilizator rekingCretu Bogdan reking Data 30 ianuarie 2014 18:40:12
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int x,y,z,aVal,bVal,cVal,n;
void init(int a[4][4],int b[4][4])
{
    a[1][2]=1;
    a[2][3]=1;
    a[3][1]=aVal;
    a[3][2]=bVal;
    a[3][3]=cVal;
    b[1][1]=1;
    b[2][2]=1;
    b[3][3]=1;
}
void inmMatrix (int a[4][4],int b[4][4])
{
    int i,j,k;
    int z[4][4]={0};
    for (i=1;i<=3;i++)
        for (j=1;j<=3;j++)
            for (k=1;k<=3;k++)
                z[i][j]=z[i][j]+a[i][k]*b[k][j];
    for (i=1;i<=3;i++)
        for (j=1;j<=3;j++)
            a[i][j]=z[i][j];
}
void powMatrix (int a[4][4],int b[4][4])
{
    while (n)
    {
        if (n&1)
            inmMatrix(b,a);
        inmMatrix(a,a);
        n=(n>>1);
    }
}
int main ()
{
    int k,t;
    f>>t;
    for (k=1;k<=t;k++)
    {
        int a[4][4]={0},b[4][4]={0};
        f>>x;
        f>>y;
        f>>z;
        f>>aVal;
        f>>bVal;
        f>>cVal;
        f>>n;
        init(a,b);
        n=n-2;
        powMatrix(a,b);
        g<<b[3][1]*x+b[3][2]*y+b[3][3]*z<<'\n';
    }
}