文章

28

粉丝

230

获赞

23

访问

242.6k

头像
利用十进制为中间桥梁,实现a->十进制->b进制。(a进制转十进制按权展开,十进制转b进制用栈处理)
P1239 北京大学机考题
发布于2021年3月16日 22:03
阅读数 7.1k

#include <iostream>
#include <algorithm>
#include <math.h>

using namespace std;

int main(int argc, char const *argv[])
{
	long long a,b,Sum;
	int stack[100]={0};
	string n;
	while(cin>>a>>n>>b){
        for(int i=0;i<100;i++){
         stack[i]=0;
        }
		Sum=0;//记录十进制数
		reverse(n.begin(),n.end());
		 transform(n.begin(), n.end(), n.begin(), ::toupper);
		for (int i = 0; i < n.length(); ++i)
		{
			if (n[i]>64)//是字母
			{
			Sum+=(n[i]-'A'+10)*pow(a,i);
		    }else{//是数字
		    Sum+=(n[i]-'0')*pow(a,i);
		    }
		}
		int j=-1;
		while(Sum!=0){
			stack[++j]=Sum%b;
			Sum/=b;
		}
		while(j!=-1){
            cout<<stack[j--];
		}
		cout<<endl;
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发