80pts求助(悬关)
  • 板块P1143 进制转换
  • 楼主zfw100
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/7 09:41
  • 上次更新2023/11/3 05:28:53
查看原帖
80pts求助(悬关)
797464
zfw100楼主2023/8/7 09:41

rt

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

int main(){
	int n,m,a[9999];
	string s;
	cin>>n>>s>>m;
	for(int i=0;i<s.length();i++){
		if(s[i]<='9'&&s[i]>='0'){
			if(s[i]=='0')a[i]=0;
			if(s[i]=='1')a[i]=1;
			if(s[i]=='2')a[i]=2;
			if(s[i]=='3')a[i]=3;
			if(s[i]=='4')a[i]=4;
			if(s[i]=='5')a[i]=5;
			if(s[i]=='6')a[i]=6;
			if(s[i]=='7')a[i]=7;
			if(s[i]=='8')a[i]=8;
			if(s[i]=='9')a[i]=9;
		}else{
			if(s[i]=='A')a[i]=10;
			if(s[i]=='B')a[i]=11;
			if(s[i]=='C')a[i]=12;
			if(s[i]=='D')a[i]=13;
			if(s[i]=='E')a[i]=14;
			if(s[i]=='F')a[i]=15;
		}
	}
	long long num=0,j=0;
	for(int i=s.length()-1;i>=0;i--){
		num+=a[i]*pow(n,j);
		j++;
	}
	int sum[9999]={-1},numm=0;
	char summ[9999]; 
	while(num>0){
		if(num%m==10)summ[numm]='A';
		if(num%m==11)summ[numm]='B';
		if(num%m==12)summ[numm]='C';
		if(num%m==13)summ[numm]='D';
		if(num%m==14)summ[numm]='E';
		if(num%m==15)summ[numm]='F';
		if(num%m>=0&&num%m<=9)sum[numm]=num%m;
		num/=m;
		numm++;	
	}
	for(int i=numm-1;i>=0;i--){
		if(sum[i]!=-1)cout<<sum[i];
		else cout<<summ[i];
	}
}
2023/8/7 09:41
加载中...