#include<cstdio>
#include<cstdlib>
#include<iostream>
#define stackmax 100000
#define stacknum 100000
int x;
typedef int Elemtype;
typedef struct
{
Elemtype *top;
Elemtype *base;
int stacksize;
} qstack;
int Initstack(qstack &s)
{
s.base=(Elemtype*)malloc(stackmax*sizeof(Elemtype));
if(!s.base)
exit(0);
s.top=s.base;
s.stacksize= stackmax;
return 0;
}
int Pushstack(qstack &s,int n)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(Elemtype *)realloc(s.base,(s.stacksize+stacknum)*sizeof(Elemtype));
if(!s.base)
exit(0);
s.top=s.base+s.stacksize;
s.stacksize+=stacknum;
}
/*for(i=0;i<n;i++)
{scanf("%d",&e);
*s.top++=e;
}*/
*(++s.top)=n;
return 0;
}
int change(qstack &s,int n,int r)
{
int t;
if(n<0)
{
n=-n;
x=0;
}
if(n==0) Pushstack(s,0);
while(n)
{
t=n%r;
n=n/r;
/*printf("%d%d\n",t,n);*/
Pushstack(s,t);
}
return 0;
}
int Putstack(qstack &s)
{
if(x==0)
{
printf("-");
x=1;
}
while(s.top>s.base)
{
if(*s.top>=10)
printf("%c",*s.top+'A'-10);
else printf("%d",*s.top);
s.top--;
}
printf("\n");
return 0;
}
int main()
{
qstack s;
Initstack(s);
int n,r;
while(~scanf("%d%d",&n,&r))
{
x=1;
change(s,n,r);
Putstack(s);
}
return 0;
}
1252 进制转换
最新推荐文章于 2017-09-26 14:20:38 发布