subtask#1WA疑问
查看原帖
subtask#1WA疑问
113893
William▪C楼主2024/1/8 22:56

C语言代码如下

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

int power(int x,int y){
	int p = 1;
	while(y--){
		p *= x;
	}
	return p;
}

struct Alphabet{
	int input;
	char output;
}alpha[]={10,'a',11,'b',12,'c',13,'d',14,'e',15,'f'};

int main() {
	char s[1010] = {'0','0','0','0'};
	int res[1010] = {0},i = 0,j = 0,tmp = 0;
	scanf("%s",s+4);
	int slen = strlen(s);
	for(i = slen;i >= 4;){ 
		for(j = 0;j < 4;j++){
			tmp += power(8,j)*(s[--i]^48);
		}
		for(j = 0;j < 3;j++){
			res[j+((slen-i)/4-1)*3] = tmp%16;
			tmp /= 16;
		}
	}
	i = (slen/4+1)*3;
	while(!res[i])i--;
	for(;i >= 0;i--){
		if(res[i]>=10){
			for(j = 0;j < 6;j++)if(res[i] == alpha[j].input)putchar(alpha[j].output);
		}
		else{
			putchar(res[i]+48);
		} 
	}
	return 0;
}
谢谢路过的大神帮忙
2024/1/8 22:56
加载中...