Pagini recente » Cod sursa (job #437042) | Cod sursa (job #2035445) | Cod sursa (job #165739) | Cod sursa (job #2334779) | Cod sursa (job #1551355)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long A[11][11], B[6][6], s[6][6];
int main()
{
int i, j, contor, k, a, b, c, x, y, z, n, t;
long long exp, baza;
f>>t;
for (contor=1;contor<=t;contor++) {
f>>x>>y>>z>>a>>b>>c>>n;
A[1][1] = 0;A[1][2]=1;A[1][3]=0;// 0 1 0
A[2][1] = 0;A[2][2]=0;A[2][3]=1;// 0 0 1
A[3][1] = a;A[3][2]=b;A[3][3]=c;// A B C
exp = n-3;
B[1][1]=x;B[2][1]=y;B[3][1]=z;
/* x(T1)
y(T2)
z(T3) */
/* cout<<"Inainte de inmultire (MATRICEA A): \n";
for (i=1;i<=3;i++) {
for (j=1;j<=3;j++)
cout<<A[i][j]<<"\t";
cout<<endl;
}
cout<<"Inainte de inmultire (matricea B): \n";
for (i=1;i<=3;i++) {
for (j=1;j<=1;j++)
cout<<B[i][j]<<"\t";
cout<<endl;*/
}
while (exp!=0) {
if (exp % 2 == 0) {
for (i=1;i<=3;i++)
for (j=1;j<=3;j++) {s[i][j] = 0;
for (k=1;k<=3;k++)
s[i][j] += A[i][k] * A[k][j];
// A[i][j]=s[i][j];
}
for (i=1;i<=3;i++)
for (j=1;j<=3;j++) A[i][j]=s[i][j];
exp/=2;
}
else {
B[1][1] = s[1][1]*B[1][1] + s[1][2]*B[2][1] + s[1][3]*B[3][1];
B[2][1] = s[2][1]*B[1][1] + s[2][2]*B[2][1] + s[2][3]*B[3][1];
B[3][1] = s[3][1]*B[1][1] + s[3][2]*B[2][1] + s[3][3]*B[3][1];
exp--;
}
}
g<<B[3][1] - 3<<endl;
/* cout<<"Dupa inmultire (matricea A): \n";
for (i=1;i<=3;i++) {
for (j=1;j<=3;j++)
cout<<A[i][j]<<"\t";
cout<<endl;
}
cout<<"Dupa inmultire (matricea B): \n";
for (i=1;i<=3;i++) {
for (j=1;j<=1;j++)
cout<<B[i][j]<<"\t";
cout<<endl;
}*
}*/
return 0;
}