20分求助
查看原帖
20分求助
547908
NightTide楼主2022/2/7 09:32

感觉没有问题,但是前四个点全错,只有空序列的那个对了,有没有大佬帮忙看看

#include<bits/stdc++.h>
#define MAXN 1010
using namespace std;
typedef unsigned long long ll;
int n;
char in[MAXN*50];
ll num[MAXN];
void turn_hex(ll x){
    int len=0;
}
void solve(ll x){
    int len_oct=0,len_hex=0;
    char hex[50];
    ll tmp=x;
    while(tmp){
        int r=tmp%16;
        if(r<10){
            hex[++len_hex]=r+'0';
        }else{
            hex[++len_hex]=r-10+'A';
        }
        tmp/=16;
    }
    tmp=x;
    while(tmp) tmp/=10,len_oct++;
    if(len_oct<=len_hex+2){
        printf("%llu",x);
    }else{
	    printf("0x");
	    for(int i=len_hex;i>=1;i--){
	        printf("%c",hex[i]);
	    }
    }
}
int main(){
	scanf("%s",in+1);
	int len=strlen(in+1);
	for(int i=1;i<=len;i++){
        if(isdigit(in[i])) n++;
		while(isdigit(in[i])){
            num[n]=num[n]*10+in[i]-'0';
            i++;
        }
	}
	putchar('{');
    for(int i=1;i<=n;i++){
    	solve(num[i]);
        if(i<n) printf(",");
    }
    putchar('}');
    return 0;
}

2022/2/7 09:32
加载中...