HIT OJ1012

真是邪了门了

在vjudge上提交,POJ和UVAlive可以通过,HOJ和ZOJ上就是不行

暂时找不到原因,代码贴在这里,希望能有dalao指点

#include <cstdio>
#include <cstring>

const int maxn = 20020;

char s1[maxn];
char s2[maxn];
char keyy[maxn];
char orii[maxn]; 
int x1;
int x2;
int x3;
int ston[500];
char ntos[500];


int main () {
//	freopen("1.in", "r", stdin);
//	freopen("1.out", "w", stdout);
	for (int i = 0; i <= 9; i++) {
		ston[i + '0'] = i;
	}
	ston['A'] = 10;
	ston['B'] = 11;
	ston['C'] = 12;
	ston['D'] = 13;
	ston['E'] = 14;
	ston['F'] = 15;
	for (int i = 0; i <= 9; i++) {
		ntos[i] =  i + '0';
	}
	for (int i = 1; i <= 6; i++) {
		ntos[i+9] = 'A' - 1 + i;
	}
	
	
while (scanf("%s %s", s1, s2) == 2) {
	int len2 = strlen(s2);
/*	for (int i = 1; i <= (len >> 1); i++) {
		x1 = ston[s1[i * 2 - 2]] * 16 + ston[s1[i * 2 - 1]];
		x2 = ston[s2[i * 2 - 2]] * 16 + ston[s2[i * 2 - 1]];
		x3 = x1 ^ x2;
		s3[i * 2 - 2] = ntos[x3 / 16];
		s3[i * 2 - 1] = ntos[x3 % 16];
	}
*/
		
	//printf("%s", s3);
	orii[0] = '2';
	orii[1] = '0';
	for (int i = 1; i <= (len2 >> 1); i++) {
		x1 = ston[orii[i * 2 - 2]] * 16 + ston[orii[i * 2 - 1]];
		x2 = ston[s2[i * 2 - 2]] * 16 + ston[s2[i * 2 - 1]];
		x3 = x2 ^ x1;
		keyy[i * 2 - 2] = ntos[x3 / 16];
		keyy[i * 2 - 1] = ntos[x3 % 16];
		x1 = ston[s1[i * 2 - 2]] * 16 + ston[s1[i * 2 - 1]];
		x2 = x3 ^ x1;
		orii[i * 2] = ntos[x2 / 16];
		orii[i * 2 + 1] = ntos[x2 % 16];
	}
	printf("%s\n", keyy);
}
	return 0;
}

已解决,在处理多组数据时存在问题,需要在字符串后面手动加入

\0

即可

AC代码

#include <cstdio>
#include <cstring>

const int maxn = 20020;

char s1[maxn];
char s2[maxn];
char keyy[maxn];
char orii[maxn]; 
int x1;
int x2;
int x3;
int ston[500];
char ntos[500];


int main () {
//	freopen("1.in", "r", stdin);
//	freopen("1.out", "w", stdout);
	for (int i = 0; i <= 9; i++) {
		ston[i + '0'] = i;
	}
	ston['A'] = 10;
	ston['B'] = 11;
	ston['C'] = 12;
	ston['D'] = 13;
	ston['E'] = 14;
	ston['F'] = 15;
	for (int i = 0; i <= 9; i++) {
		ntos[i] =  i + '0';
	}
	for (int i = 1; i <= 6; i++) {
		ntos[i+9] = 'A' - 1 + i;
	}
	
	
while (scanf("%s %s", s1, s2) != EOF) {
	int len2 = strlen(s2);
/*	for (int i = 1; i <= (len >> 1); i++) {
		x1 = ston[s1[i * 2 - 2]] * 16 + ston[s1[i * 2 - 1]];
		x2 = ston[s2[i * 2 - 2]] * 16 + ston[s2[i * 2 - 1]];
		x3 = x1 ^ x2;
		s3[i * 2 - 2] = ntos[x3 / 16];
		s3[i * 2 - 1] = ntos[x3 % 16];
	}
*/
		
	//printf("%s", s3);
	orii[0] = '2';
	orii[1] = '0';
	for (int i = 1; i <= (len2 >> 1); i++) {
		x1 = ston[orii[i * 2 - 2]] * 16 + ston[orii[i * 2 - 1]];
		x2 = ston[s2[i * 2 - 2]] * 16 + ston[s2[i * 2 - 1]];
		x3 = x2 ^ x1;
		keyy[i * 2 - 2] = ntos[x3 / 16];
		keyy[i * 2 - 1] = ntos[x3 % 16];
		x1 = ston[s1[i * 2 - 2]] * 16 + ston[s1[i * 2 - 1]];
		x2 = x3 ^ x1;
		orii[i * 2] = ntos[x2 / 16];
		orii[i * 2 + 1] = ntos[x2 % 16];
	}
	keyy[len2] = '\0';
	printf("%s\n", keyy);
}
	return 0;
}

发布了90 篇原创文章 · 获赞 65 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ctsnevermore/article/details/82916689