文章
64
粉丝
100
获赞
4
访问
36.1k
最开始出现80%,最后修改sum的类型为long,Accepted!!
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m,n;
char x;
scanf("%d %d",&m,&n);
getchar();
char b[105];
gets(b);
int l=strlen(b);
char a[105]={0};
long sum=0;
//转化为10进制
for(int j=0;j<l;j++)
{
if(m<10)
sum=sum*m+b[j]-'0';
if(m>= 10)
{
if(b[j]>='0'&&b[j]<='9')
sum=sum*m+b[j]-'0';
else
sum=sum*m+b[j]-'A'+10;
}
}
//将十进制转化为n进制
int i=0;
if(n<10)
{
while(sum>0)
{
int y=sum%n;
sum=sum/n;
a[i++]=y+'0';
}
}
if(n>=10)
{
while(sum>0)
{
int y=sum%n;
sum=sum/n;
if(y>=10)
a[i++]=y+'a'-10;
if(y<10)
a[i++]=y+'0';
}
}
for(int j=i-1;j>=0;j--)
{
printf("%c",a[j]);
}
}
登录后发布评论
果然,数据类型错误,要用long long int