Acwing 3534. 矩阵幂 3535. C翻转
3534. 矩阵幂 - AcWing题库
思路:模拟,当然,k次幂可以用快速幂优化,这里懒了
#include <iostream>
#include <vector>
using namespace std;vector<vector<int>> mul(int n, vector<vector<int>>& a, vector<vector<int>>& b) {vector<vector<int>> tmp(n, vector<int>(n, 0));for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {int cur = 0;for(int k = 0; k < n; k++) {cur += a[i][k] * b[k][j];}tmp[i][j] = cur;}}return tmp;
}int main() {int n, k;cin >> n >> k;vector<vector<int>> g(n, vector<int>(n));for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {cin >> g[i][j];}}vector<vector<int>> res = g;while(--k) {res = mul(n, g, res);}for(int i = 0; i < n; i++) {for(int j = 0; j < n; j++) {cout << res[i][j] << " ";}cout << endl;}return 0;
}
3535. C翻转 - AcWing题库
思路:
顺时针旋转[i][j]-->[c+j-d][d+b+c-i-1]
逆时针旋转[i][j]-->[d+b+c-j-1][d+i-c]
#include<iostream>
using namespace std;
int pre[6][6];
int pro[6][6];
int main(){for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){cin>>pre[i][j];}}int a,b,c,d;cin>>a>>b>>c>>d;int n=b;if(a==1){for(int i=c;i<=c+b-1;i++){for(int j=d;j<=d+b-1;j++){pro[c+j-d][d+b+c-i-1]=pre[i][j];}}for(int i=c;i<=c+b-1;i++){for(int j=d;j<=d+b-1;j++){pre[i][j]=pro[i][j];}}}else if(a==2){for(int i=c;i<=c+b-1;i++){for(int j=d;j<=d+b-1;j++){pro[d+b+c-j-1][i+d-c]=pre[i][j];}}for(int i=c;i<=c+b-1;i++){for(int j=d;j<=d+b-1;j++){pre[i][j]=pro[i][j];}}}for(int i=1;i<=5;i++){for(int j=1;j<=5;j++){cout<<pre[i][j]<<" ";}cout<<endl;}return 0;
}