oj 任意进制间的数值转换

在这里插入图片描述
思路,从十进制中间桥梁入手即可

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;

int countx(char a){
	if(a >= '0' && a<= '9')
		return a - '0';
	else if(a >= 'a'&&a <= 'z'){
		return a - 'a' + 10;
	}
	else
		return a - 'A' + 10;
}

int main(){
	int a,  b;
	char str[40];
	while(scanf("%d %s %d",&a,&str,&b)!=EOF){
		
		
		//向十进制转换
		int c = 1;
		long x = 0;
		int i = strlen(str) - 1;
		while(i >= 0){
			x += countx(str[i])*c;
			c *= a;
			i--;
		}
		//向目标进制转换
		char ans[40];
		int index = 0;
		while(x > 0){
			ans[index++] = x % b;
			x /= b;
		}
		//输出 
		for(int k = index - 1;k >= 0 ;k--){
			printf("%d",ans[k]);
		}
		cout<<endl;
		
	}
}
发布了78 篇原创文章 · 获赞 3 · 访问量 6592

猜你喜欢

转载自blog.csdn.net/weixin_38023259/article/details/104225546
OJ