HDU 4364 매트릭스 작 동 (매트릭스)

1609 단어 Matrix
전재 출처 를 밝 혀 주 십시오. 감사합니다. http://blog.csdn.net/ACM_cxlove?viewmode=contents           by---cxlove
제목: 연산 을 정의 하고 행렬 을 곱 합 니 다.
물 문제, 바로 제목 에 따라 시 뮬 레이 션 을 묘사 하면 된다.
근 데 제목 이 너무 모호 해...오랫동안 갈등 했다
16 진법 의 입 출력 과 비트 연산 에 주의 하 세 요. 편리 합 니 다.
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <ctime>
#include <set>
#include <map>
#include <deque>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int a[4][4]={2,3,1,1,1,2,3,1,1,1,2,3,3,1,1,2};
int main(){
    int t,mat[4][4],ans[4][4];
    scanf("%d",&t);
    while(t--){
        for(int i=0;i<4;i++)
            for(int j=0;j<4;j++){
                scanf("%X",&mat[i][j]);
            }
        for(int i=0;i<4;i++){
            for(int j=0;j<4;j++){
                ans[i][j]=0;
                for(int k=0;k<4;k++){
                    int tmp=mat[k][j];
                    if(a[i][k]!=2)
                        ans[i][j]^=tmp;
                    if(a[i][k]!=1){
                        if(tmp&(1<<7))
                            ans[i][j]^=27;
                        ans[i][j]^=(tmp<<1)&255;
                    }
                }
            }
        }
        for(int i=0;i<4;i++){
            for(int j=0;j<3;j++)
                printf("%02X ",ans[i][j]);
            printf("%02X
",ans[i][3]); } if(t) puts(""); } return 0; }

좋은 웹페이지 즐겨찾기