牛客oj 习题6.3进制转换&&习题6.4数值转换

十进制转别的模除,别的转十进制乘加。记住了。

另外这题还是不严谨,没说明字符串几位,多了就得大数处理了。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <stack>
#include <cctype>
#include <climits>
 
using namespace std;
 
const int MAXN = 1005;
const int INF = INT_MAX;

int CharToInt(char x){
	if(x >= '0' && x <= '9') return (x - '0');
	else if(x >= 'a' && x <= 'f') return (10 + x - 'a');
}
 
int main(){
  //  freopen("in.txt", "r", stdin);
    string str;
    while(cin >> str){
    	str.erase(0, 2);
    	long long ans = 0;
    	for(int i = 0; i < str.size(); i++){
    		if(isupper(str[i])) str[i] = tolower(str[i]);
    		ans *= 16;
    		ans += CharToInt(str[i]);
    	}
    	printf("%lld\n", ans);
    }
    return 0;
}

任意进制之间转换,先转化为十进制,再转化为任意进制,为两类题的结合版。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <stack>
#include <cctype>
#include <climits>
 
using namespace std;
 
const int MAXN = 1005;
const int INF = INT_MAX;

int CharToInt(char x){
	if(x >= '0' && x <= '9') return (x - '0');
	else if(x >= 'A' && x <= 'F') return (10 + x - 'A');
}

char IntToChar(int x){
	if(x >= 0 && x <= 9) return (x + '0');
	else if(x >= 10 && x <= 16) return ( x - 10 + 'A');
}
 
int main(){
 //   freopen("in.txt", "r", stdin);
    string n;
    int a, b;
    while(cin >> a >> n >> b){
    	bool flag = true;
    	int end = 0;
    	for(int i = 0; i < n.size(); i++){
    		if(n[i] == '0' && flag) end++;
    		if(n[i] != '0') flag = false;
    		if(islower(n[i])) n[i] = toupper(n[i]);
    	}
    	n.erase(0, end);//去前导0 
    	long long decimal = 0; 
    	for(int i = 0; i < n.size(); i++){
    		decimal *= a;
    		decimal += CharToInt(n[i]);
    	}
    	string ans;
    	if(decimal == 0) ans = "0";
    	while(decimal != 0){
    		ans += IntToChar(decimal%b);
    		decimal /= b;
    	}
    	reverse(ans.begin(), ans.end());
    	cout << ans << endl;
    }
    return 0;
}
发布了411 篇原创文章 · 获赞 72 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/Flynn_curry/article/details/104722740