站外题16转8进制求条(悬关*2)
  • 板块学术版
  • 楼主2011Andy
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/8/4 11:44
  • 上次更新2023/11/3 05:59:59
查看原帖
站外题16转8进制求条(悬关*2)
660871
2011Andy楼主2023/8/4 11:44
#include <bits/stdc++.h>
using namespace std;
string s;
int t = 0;
char c[100005];
signed main(){
	cin >> s;
	if(s == "0"){
		cout << "0";
		return 0;
	} 
	for(int i = s.size() - 1 ; i >= 0 ; i--){
		if(s[i] == '0') c[++t] = '0' , c[++t] = '0' , c[++t] = '0' , c[++t] = '0';
		if(s[i] == '1') c[++t] = '1' , c[++t] = '0' , c[++t] = '0' , c[++t] = '0';
		if(s[i] == '2') c[++t] = '0' , c[++t] = '1' , c[++t] = '0' , c[++t] = '0';
		if(s[i] == '3') c[++t] = '1' , c[++t] = '1' , c[++t] = '0' , c[++t] = '0';
		if(s[i] == '4') c[++t] = '0' , c[++t] = '0' , c[++t] = '1' , c[++t] = '0';
		if(s[i] == '5') c[++t] = '1' , c[++t] = '0' , c[++t] = '1' , c[++t] = '0';
		if(s[i] == '6') c[++t] = '0' , c[++t] = '1' , c[++t] = '1' , c[++t] = '0';
		if(s[i] == '7') c[++t] = '1' , c[++t] = '1' , c[++t] = '1' , c[++t] = '0';
		if(s[i] == '8') c[++t] = '0' , c[++t] = '0' , c[++t] = '0' , c[++t] = '1';
		if(s[i] == '9') c[++t] = '1' , c[++t] = '0' , c[++t] = '0' , c[++t] = '1';
		if(s[i] == 'A') c[++t] = '0' , c[++t] = '1' , c[++t] = '0' , c[++t] = '1';
		if(s[i] == 'B') c[++t] = '1' , c[++t] = '1' , c[++t] = '0' , c[++t] = '1';
		if(s[i] == 'C') c[++t] = '0' , c[++t] = '0' , c[++t] = '1' , c[++t] = '1';
		if(s[i] == 'D') c[++t] = '1' , c[++t] = '0' , c[++t] = '1' , c[++t] = '1';
		if(s[i] == 'E') c[++t] = '0' , c[++t] = '1' , c[++t] = '1' , c[++t] = '1';
		if(s[i] == 'F') c[++t] = '1' , c[++t] = '1' , c[++t] = '1' , c[++t] = '1';
	}
	if(t % 3 != 0){
		if(t % 3 == 1) c[++t] = '0';
		if(t % 3 == 2) c[++t] = '0' , c[++t] = '0';
	}
	int cnt = 0;
	char q[100005] = {0};
	for(int i = 1 ; i <= t ; i += 3){
		int x = (c[i] - '0') * 1 + (c[i + 1] - '0') * 2 + (c[i + 2] - '0') * 4;
		q[++cnt] = x + '0';
	}
	int flag = 0;
	for(int i = cnt ; i >= 1 ; i--){
		if(q[i] == '0' && !flag) continue;
		cout << q[i]; flag = 1;
	} 
	return 0;
}
2023/8/4 11:44
加载中...