2012 Multi-University Training Contest 7-1005 hdu4364 Matrix operation

来源:互联网 发布:js设置div背景颜色 编辑:程序博客网 时间:2024/05/29 13:02

大水题,只是题目描述有点儿坑爹,需要枚举……不幸的是WA了一次才A,幸运的是只WA了一次……


#include <iostream>#include <memory.h>#include <cstdio>using namespace std;int main(){    char ch;    int k,tmp,val[300],recVal[30],num[4][4],res[4][4];    int rec[4][4]={{2,3,1,1},{1,2,3,1},{1,1,2,3},{3,1,1,2}};    memset(val,0,sizeof(val));    for(int i=0;i<10;i++)    {        val['0'+i]=i;        recVal[i] ='0'+i;    }    val['A'] = 10;    val['B'] = 11;    val['C'] = 12;    val['D'] = 13;    val['E'] = 14;    val['F'] = 15;    recVal[10]='A';    recVal[11]='B';    recVal[12]='C';    recVal[13]='D';    recVal[14]='E';    recVal[15]='F';    scanf("%d",&k);    while(k--)    {        for(int i=0;i<4;i++)        {            for(int j=0;j<4;j++)            {                num[i][j] = 0;                ch=getchar();                while(ch==' '||ch=='\n') ch=getchar();                num[i][j]+=val[ch]*16;                ch=getchar();                while(ch==' '||ch=='\n') ch=getchar();                num[i][j]+=val[ch];            }        }        for(int i=0;i<4;i++)        {            for(int j=0;j<4;j++)            {                res[i][j]=0;                for(int k=0;k<4;k++)                {                    if(rec[i][k]==1) res[i][j]^=num[k][j];                    else if(rec[i][k]==2)                    {                        tmp=(num[k][j]<<1);                        if(tmp>255) tmp^=27;                        res[i][j]^=tmp;                    }                    else                    {                        tmp = (num[k][j]<<1);                        if(tmp>255) tmp^=27;                        res[i][j]^=(num[k][j]^tmp);                    }                }            }        }        for(int i=0;i<4;i++)        {            for(int j=0;j<4;j++)            {                if(j!=0) printf(" ");                ch=recVal[(res[i][j]/16)%16];                printf("%c",ch);                ch=recVal[res[i][j]%16];                printf("%c",ch);            }            printf("\n");        }        if(k) printf("\n");    }    return 0;}



原创粉丝点击