Problem Description
输入一个十进制非负整数,将其转换成对应的 R (2 <= R <= 9) 进制数,并输出。
Input
第一行输入需要转换的十进制非负整数;
第二行输入 R。
Output
输出转换所得的 R 进制数。
Example Input
1279 8
Example Output
2377
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType;
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
} SqStack;
int InitStack(SqStack &S)
{
S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if( !S.base) return -1;
S.top = S.base;
S.stacksize = STACK_INIT_SIZE;
return 0;
}
int Push(SqStack &S, SElemType e)
{
if(S.top - S.base >= S.stacksize)
{
S.base = (SElemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) *sizeof(SElemType));
if(!S.base) return -1;
S.top = S.base + S.stacksize;
S.stacksize += STACKINCREMENT;
}
*S.top = e;
S.top++;
return 0;
}
int Pop(SqStack &S)
{
SElemType e;
while(1)
{
if(S.top == S.base)
break;
else
{
e = *--S.top;
printf("%d", e);
}
}
return 0;
}
void conversion(SqStack &S, int n, int m)
{
if(n == 0)
{
Push(S, 0);
}
else
{
while(n)
{
Push(S, n % m);
n = n / m;
}
}
}
int main()
{
SqStack S;
double n, m;
scanf("%lf", &n);
scanf("%lf", &m);
InitStack(S);
conversion(S, n, m);
Pop(S);
return 0;
}