深圳市建设局网站金建,网站dns查询,苏州集团网站设计企业,广州公司注册地址可以是住宅吗一.矩阵与模板
【模板】矩阵求和
时间限制#xff1a;1秒 内存限制#xff1a;128M
题目描述
给出两个#x1d45b;行#x1d45a;列的矩阵#xff0c;求两个矩阵的和
输入描述
第一行输入两个以空格分隔的整数#x1d45b;,#x1d45a;#xff0c;表示矩…一.矩阵与模板
【模板】矩阵求和
时间限制1秒 内存限制128M
题目描述
给出两个行列的矩阵求两个矩阵的和
输入描述
第一行输入两个以空格分隔的整数,表示矩阵的行数和列数
接下来的行每行个以空格分隔的实数1[][]表示第一个矩阵
接下来的行每行m个以空格分隔的实数2[][]表示第二个矩阵
1≤≤100,1≤≤100
0≤1[][]≤1000,0≤2[][]≤1000
cout fixed setprecision(2) x; 或者 printf(“%.2lf”,x); 可以用来输出小数x并保留两位小数
输出描述
输出n行每行包含个以空格分隔的实数表示两个矩阵相加的结果
矩阵中的实数都保留2位小数
样例输入
2 31.1 1.2 1.32.1 2.2 2.31.1 1.2 1.32.1 2.2 2.3
样例输出
2.20 2.40 2.604.20 4.40 4.60
#includeiostream
using namespace std;
double a[105][105],o;
int n,m;
int main(){cinnm;for(int i1;in;i){for(int j1;jm;j){cino;a[i][j]o;}}for(int i1;in;i){for(int j1;jm;j){cino;a[i][j]o;}}for(int i1;in;i){for(int j1;jm;j)printf(%.2lf ,a[i][j]);cout\n;}return 0;
}
【模板】矩阵乘法
时间限制1秒 内存限制128M
题目描述
给定两个矩阵,求矩阵∗
输入描述
第一行四个整数1,1,2,2代表第一个矩阵和第二个矩阵的列数和行数。
接下来1行每行m1个整数代表第一个矩阵。
之后2行每行m2个整数代表第二个矩阵。
数据保证12。所有的输入数据不超过100
输出描述
输出1行每行2个整数代表矩阵。
样例输入1
2 2 2 22 22 22 22 2
样例输出1
8 88 8
样例输入2
2 2 2 21 23 12 51 7
样例输出2
4 197 22
#includeiostream
using namespace std;
const int N 105;
int n1,n2,m1,m2;
int a[N][N],b[N][N],c[N][N];
int main(){cinm1n1m2n2;for(int i1;in1;i)for(int j1;jm1;j)cina[i][j];for(int i1;in2;i)for(int j1;jm2;j)cinb[i][j];for(int i1;in1;i){for(int j1;jm2;j){for(int k1;km1;k){c[i][j]a[i][k]*b[k][j];}}}for(int i1;in1;i){for(int j1;jm2;j){coutc[i][j] ;}cout\n;}return 0;
} 【模板】矩阵加速
时间限制1秒 内存限制128M
题目描述
已知一个数列a满足 求数列的第项模10^97的值。
输入描述
第一行一个整数(1≤≤100)表示询问的次数。
以下个正整数(1≤≤2×10^9)。
输出描述
每行输出一个非负整数表示答案。
样例输入
36810
样例输出
4919
#includeiostream
#includecstring
using namespace std;
#define ll long long
const int N 2;
const int mod 1e97;
ll a[N][N]{{1,1},{1,0}};
ll s[N][N]{{1,1},{0,0}};
ll n,T;
struct Mat//封装好的矩阵操作
{#define int long longint a[105][105];int r, c;Mat(int _r 0, int _c 0){r _r, c _c;memset(a, 0, sizeof(a));if (c 0)c r; //这样传入一个参数可以构造方阵}void unit(){ //将自身变成单位矩阵memset(a, 0, sizeof(a));for (int i 1; i r; i)a[i][i] 1;}friend Mat operator(Mat x, Mat y){Mat ans(x.r, x.c);for (int i 1; i x.r; i)for (int j 1; j x.c; j)ans.a[i][j] x.a[i][j] y.a[i][j];return ans;}friend Mat operator-(Mat x, Mat y){Mat ans(x.r, x.c);for (int i 1; i x.r; i)for (int j 1; j x.c; j)ans.a[i][j] x.a[i][j] - y.a[i][j];return ans;}friend Mat operator*(Mat x, Mat y){Mat ans(x.r, y.c);for (int i 1; i x.r; i)for (int j 1; j y.c; j)for (int k 1; k x.c; k)ans.a[i][j] x.a[i][k] * y.a[k][j];return ans;}friend Mat operator%(Mat x, int t){for (int i 1; i x.r; i)for (int j 1; j x.c; j)x.a[i][j] % t;return x;}void out(){for (int i 1; i r; i){for (int j 1; j c; j)cout a[i][j] ;cout endl;}}Mat pow(ll b){Mat ans(r, c), a *this;ans.unit();while (b){if (b 1)ans ans * a;a a * a;b 1;}return ans;}Mat pow(ll b, ll p){Mat ans(r, c), a *this;ans.unit();while (b){if (b 1)ans ans * a % p;a a * a % p;b 1;}return ans;}#undef int
};
int main(){cinT;while(T--){cinn;if(n3){cout1\n;continue;}Mat a(3),b(3);a.a[1][1]1,a.a[1][2]1,a.a[1][3]1;b.a[1][1]b.a[1][2]b.a[2][3]b.a[3][1]1;aa*b.pow(n-3,mod)%mod;couta.a[1][1]\n;}return 0;
}