萌新刚学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;
}