top1编程
← 返回题目
题解

进制转换

1 条题解

  • 0
    @ 2026-7-29 23:55:08
    #include<bits/stdc++.h>
    using namespace std;
    
    int main(){
    	int n,m;
    	char a[100];
    	cin>>n;
    	cin>>a;
    	cin>>m;
    	
    	// n进制转十进制
    	long long x=0;
    	int len=strlen(a);
    	
    	for(int i=0;i<len;i++){
    		int t;
    		
    		if(a[i]>='0'&&a[i]<='9'){
    			t=a[i]-'0';
    		}
    		else{
    			t=a[i]-'A'+10;
    		}
    		
    		x=x*n+t;
    	}
    	
    	// 十进制转m进制
    	char b[100];
    	int cnt=0;
    	
    	if(x==0){
    		cout<<0;
    		return 0;
    	}
    	
    	while(x>0){
    		int t=x%m;
    		
    		if(t<10){
    			b[cnt]=t+'0';
    		}
    		else{
    			b[cnt]=t-10+'A';
    		}
    		
    		cnt++;
    		x=x/m;
    	}
    	
    	// 倒着输出
    	for(int i=cnt-1;i>=0;i--){
    		cout<<b[i];
    	}
    	
    	return 0;
    }
    
    
    • 1