>528 入力部分は割愛
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int char2int(char a) { return '0'<=a && a<='9' ? a - '0' : tolower(a) - 'a' + 10;}
int main(void)
{
char a[] = "FF", b[] = "FF", c[256] = {0};
int lena, lenb, lenc, i, j;
lena = strlen(a);
lenb = strlen(b);
for(i=0; i<lena; i++) {
int tempa = char2int(a[lena-1-i]);
for(j=0; j<lenb; j++) {
int tempb = char2int(b[lenb-1-i]);
c[i+j] += tempa * tempb % 16;
if(c[i+j]/16) {
c[i+j+1] += c[i+j]/16;
c[i+j] %= 16;
}
c[i+j+1] += tempa * tempb / 16;
if(c[i+j+1] / 16) {
c[i+j+2] += c[i+j+1]/16;
c[i+j+1] %= 16;
}
}
}
for(i=255; i>0; i--) if(c[i]) break;
lenc = i+1;
for(i=lenc-1; i>=0; i--) printf("%x", c[i]);
return 0;
}