样例能过,但是只有30....菜鸟求助
查看原帖
样例能过,但是只有30....菜鸟求助
276980
不失狂傲楼主2023/4/11 08:44
#include<stdio.h>
#include<math.h>
#include<string.h>
//#include <bits/stdc++.h>

void jinzhi_8_2(char s,char *temp);
char jinzhi_2_16(char *temp);

int main(){
	
	char s[1000]="\0";
	scanf("%s",s);
	char temp[3000]="\0";
	char out[1000]="\0";
	for(int i=0;i<strlen(s);i++){
		jinzhi_8_2(s[i],&temp[3*i]);
	}
	
//	printf("%s\n",temp);
	
	int start= strlen(temp)%4;
	
	int opinion=0;
	for(int i=0;i<start;i++){
		opinion=opinion || temp[i];
	}
	for(int i=0;opinion;i++){
		out[i]=jinzhi_2_16(&temp[4*i]+start);
		opinion= temp[4*(i+1)+start] || temp[4*(i+1)+1+start] || temp[4*(i+1)+2+start] || temp[4*(i+1)+3+start];
	}
	
	printf("%s",out);
	
	return 0;
}

void jinzhi_8_2(char s,char *temp){
	int a=s-48;
	for(int i=0;i<3;i++){
		if(a%2==0){
			temp[2-i]='0';
		}else{
			temp[2-i]='1';
		}
		a/=2;
	}
}

char jinzhi_2_16(char *temp){
	char jinzhi[]="0123456789abcdef";
	int a=0;
	for(int i=0;i<4;i++){
//		printf("%c",temp[i]);
		a+=(temp[i]-48)*(int)pow(2,3-i);
	}
//	printf("\n");
	return jinzhi[a];
}
2023/4/11 08:44
加载中...