第一个测试点没错但是WA
查看原帖
第一个测试点没错但是WA
452295
DUCK_lnbby楼主2021/7/11 14:53
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stack>
#define A 10 
#define B 11 
#define C 12 
#define D 13 
#define E 14 
#define F 15
using namespace std;
int change(char * number,int n){		//n进制转化成十进制 
	int result=0;
	int x=0;
	for(int i=strlen(number)-1;i>=0;i--){
		if(number[i]>='A' && number[i]<='F'){
			result+=pow(n,x++)*(number[i]-'0'-7);
		}else{
			result+=pow(n,x++)*(number[i]-'0');
		}
	}
	return result;
}
void changeToN(int number,int n){		//十进制转换成n进制 
	int temp=number;
	stack<int> S;
	while(temp>(n-1)){
		S.push(temp%n);
		temp/=n;
		if(temp<=n-1){
			S.push(temp);
			break;
		}
	}
	while(!S.empty()){
		switch(S.top()){
			case 10:printf("A");break;
			case 11:printf("B");break;
			case 12:printf("C");break;
			case 13:printf("D");break;
			case 14:printf("E");break;
			case 15:printf("F");break;
			default:printf("%d",S.top());
		}
		S.pop();
	}
}
int main()
{
	char number[100];
	int n,m;
	scanf("%d",&n);		//需要转换的进制 
	getchar();
	gets(number);
	scanf("%d",&m);
	changeToN(change(number,n),m);
	return 0;
} 
2021/7/11 14:53
加载中...