文章

26

粉丝

0

获赞

10

访问

1.8k

头像
进制转换3 题解:C++ 80%通过率的看这里
P1422 清华大学/厦门大学机试题
发布于2025年6月25日 21:48
阅读数 48

#include<bits/stdc++.h>
using namespace std;

int main(){
	int m,n;
	string s;
	cin>>m>>n;
	cin>>s;
	if(m==n){
		//需要注意的是这里题目要求输入时的字母要大写,输出时的字母需要为小写 
		for(int i=0;i<s.length();i++){
			if(s[i]>='A'&&s[i]<='Z'){
				cout<<char(s[i]+32);
			}else{
				cout<<s[i];
			}
		}
		cout<<endl;
	}else{
		//M转十进制
		long long res=0;//需要注意这里需要考虑稍微大点的数 
		for(int i=s.length()-1;i>=0;i--){
			if(s[i]>='A'&&s[i]<='Z'){
				res+=(s[i]-55)*pow(m,s.length()-1-i);
			}else if(s[i]-'0'>=0&&s[i]-'0'<=9){
				res+=(s[i]-'0')*pow(m,s.length()-1-i);
			}
		}
		
		//十进制转N进制
		int num[100]={0},index=0;
		while(res!=0){
			num[index]=res%n;
			index++;
			res=res/n;
		}
		for(int i=index-1;i>=0;i--){
			if(num[i]>=10&&num[i]<=35){
				cout<<char(num[i]+87);
			}else if(num[i]>=0&&num[i]<=9){
				cout<<num[i];
			}
		}
		cout<<end...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发