样例过,下载的数据也过,就是WA……
#include<bits/stdc++.h>
using namespace std;
long long n,m,an[1009],ans_1,fl=0,q=1;
char ans[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'},ans_end[1009];
long long ksm(long long x,long long y){
if(y==0) return 1;
if(y==1) return x;
long long ans=1;
while(y){
if(y%2==1) ans*=x;
x*=x;
y/=2;
}
return ans;
}
void to_ten(long long a[],long long l,long long m){
for(long long i=0;i<l;i++) ans_1+=a[i]*ksm(m,i);
return;
}
void to_ans(long long an,long long m){
if(an==0) fl=1;
if(fl==1) return;
ans_end[q]=ans[an%m];
q++;
to_ans(an/m,m);
}
string s;
int main(){
cin>>n;
cin>>s;
cin>>m;
long long len=s.length();
for(long long i=0;i<len;i++){
if(s[i]>='0'&&s[i]<='9') an[i]=s[i]-'0';
else an[i]=s[i]-'A'+10;
}
to_ten(an,len,n);
to_ans(ans_1,m);
for(long long i=q;i>=1;i--) cout<<ans_end[i];
return 0;
}
代码中有一些抽象的地方,本蒟蒻太懒,没改……