萌新求助
查看原帖
萌新求助
945742
hexuchen楼主2023/12/24 22:20

萌新刚学OI,这份代码(半年前写的,马蜂有点奇怪)

#include <iostream>
#include <string>
using namespace std;
int huan(int a,string b){
	int base=1,zhen,sum=0;
	for(int i=b.size()-1;i>=0;i--){
		if('A'<=b[i] && 'Z'>=b[i])
			zhen=b[i]-'A'+10;
		else
			zhen=b[i]-'0';
		zhen*=base;
		sum+=zhen;
		base*=a;
	}
	return sum;
}
void huan2(int a,int b){
	int c,s2[100001],i=0,j;
	while(a>0){
		c=a%b;
		s2[i]=c;
		a/=b;
		i++;
	}
	for(int j=i-1;j>=0;j--){
		if(s2[j]>=10){
			cout<<char(s2[j]-10+65);
		}
		else{
			cout<<s2[j];
		}
	}
}
int main(){
	int n,m;
	string s;
	cin>>n>>s>>m;
	huan2(huan(n,s),m);
	return 0;
}

是AC的,但是如果我加上 #define int unsigned long long之后就全部TLE了,这是怎么回事?

#include <iostream>
#include <string>
#define int unsigned long long
using namespace std;
int huan(int a,string b){
	int base=1,zhen,sum=0;
	for(int i=b.size()-1;i>=0;i--){
		if('A'<=b[i] && 'Z'>=b[i])
			zhen=b[i]-'A'+10;
		else
			zhen=b[i]-'0';
		zhen*=base;
		sum+=zhen;
		base*=a;
	}
	return sum;
}
void huan2(int a,int b){
	int c,s2[100001],i=0,j;
	while(a>0){
		c=a%b;
		s2[i]=c;
		a/=b;
		i++;
	}
	for(int j=i-1;j>=0;j--){
		if(s2[j]>=10){
			cout<<char(s2[j]-10+65);
		}
		else{
			cout<<s2[j];
		}
	}
}
signed main(){
	int n,m;
	string s;
	cin>>n>>s>>m;
	huan2(huan(n,s),m);
	return 0;
}
2023/12/24 22:20
加载中...