思路:模拟,当然,k次幂可以用快速幂优化,这里懒了
- #include
- #include
- using namespace std;
-
- vector
int>> mul(int n, vectorint>>& a, vectorint>>& b) { - 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
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
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;
- }
思路:
顺时针旋转[i][j]-->[c+j-d][d+b+c-i-1]
逆时针旋转[i][j]-->[d+b+c-j-1][d+i-c]
- #include
- 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<
" ";
- }
- cout<
- }
-
- return 0;
- }