E: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4690
这道题挺水,只是要耐心的打表,我一开始只打了一半就不想做了,也是因为我的方法太麻烦了,把x,y坐标分开存,处理的数据量差不多增加了一倍。
这题有一点注意:题目中并没有限制字符串的长度,所以char数组尽量开大些。
下面是赛后AC的代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
string s[100][100];
char a[9000000];
void init()
{
s[0][0] = "00";
s[0][1] = "01";
s[0][2] = "02";
s[0][3] = "03";
s[0][5] = "09";
s[0][7] = "7F" ;
s[0][11] = "0B";
s[0][12] = "0C";
s[0][13] = "0D";
s[0][14] = "0E";
s[0][15] = "0F";
s[1][0] = "10";
s[1][1] = "11";
s[1][2] = "12";
s[1][3] = "13";
s[1][6] = "08";
s[1][8] = "18";
s[1][9] = "19";
s[1][12] = "1C";
s[1][13] = "1D";
s[1][14] = "1E";
s[1][15] = "1F" ;
s[2][5] = "0A";
s[2][6] = "17";
s[2][7] = "1B" ;
s[2][13] = "05" ;
s[2][14] = "06" ;
s[2][15] = "07";
s[3][2] = "16";
s[3][7] = "04";
s[3][12] = "14";
s[3][13] = "15";
s[3][15] = "1A";
s[4][0]="20";
s[4][11]="2E";
s[4][12]="3C";
s[4][13]="28";
s[4][14]="2B";
s[4][15]="7C";
s[5][0]="26";
s[5][10]="21";
s[5][11]="24";
s[5][12]="2A";
s[5][13]="29";
s[5][14]="3B";
s[6][0]="2D";
s[6][1]="2F";
s[6][11]="2C";
s[6][12]="25";
s[6][13]="5F";
s[6][14]="3E";
s[6][15]="3F";
s[7][9]="60";
s[7][10]="3A";
s[7][11]="23";
s[7][12]="40";
s[7][13]="27";
s[7][14]="3D";
s[7][15]="22";
s[8][1]="61";
s[8][2]="62";
s[8][3]="63";
s[8][4]="64";
s[8][5]="65";
s[8][6]="66";
s[8][7]="67";
s[8][8]="68";
s[8][9]="69";
s[9][1]="6A";
s[9][2]="6B";
s[9][3]="6C";
s[9][4]="6D";
s[9][5]="6E";
s[9][6]="6F";
s[9][7]="70";
s[9][8]="71";
s[9][9]="72";
s[10][1]="7E";
s[10][2]="73";
s[10][3]="74";
s[10][4]="75";
s[10][5]="76";
s[10][6]="77";
s[10][7]="78";
s[10][8]="79";
s[10][9]="7A";
s[11][0]="5E";
s[11][10]="5B";
s[11][11]="5D";
s[12][0]="7B";
s[12][1]="41";
s[12][2]="42";
s[12][3]="43";
s[12][4]="44";
s[12][5]="45";
s[12][6]="46";
s[12][7]="47";
s[12][8]="48";
s[12][9]="49";
s[13][0]="7D";
s[13][1]="4A";
s[13][2]="4B";
s[13][3]="4C";
s[13][4]="4D";
s[13][5]="4E";
s[13][6]="4F";
s[13][7]="50";
s[13][8]="51";
s[13][9]="52";
s[14][0]="5C";
s[14][2]="53";
s[14][3]="54";
s[14][4]="55";
s[14][5]="56";
s[14][6]="57";
s[14][7]="58";
s[14][8]="59";
s[14][9]="5A";
s[15][0]="30";
s[15][1]="31";
s[15][2]="32";
s[15][3]="33";
s[15][4]="34";
s[15][5]="35";
s[15][6]="36";
s[15][7]="37";
s[15][8]="38";
s[15][9]="39";
}
int main()
{
init();
scanf("%s",a);
int len=strlen(a);
int x,y;
for(int i=0;i<len;i+=2)
{
//cout<<i<<endl;
if(a[i]>='0'&&a[i]<='9')
x=a[i]-'0';
else
x=a[i]-'A'+10;
if(a[i+1]>='0'&&a[i+1]<='9')
y=a[i+1]-'0';
else
y=a[i+1]-'A'+10;
cout<<s[x][y];
}
cout<<endl;
return 0;
}
A:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686
矩阵加快速幂
只是不知道矩阵如何构造出来,还是明白后再写吧。