Hdu 2031-送り変換
1430 ワード
データ構造シーケンス
十進数のNを入力して、R進数の数に変換します.Rが10より大きい場合は、16進数(例えば10はAで表します.)を参照します.
この問題は私達のデータ構造課の実験問題でもあります.だから、私は順番スタックを利用して実現しました.もちろん、行列逆順で出力してもいいです.
ACコードは以下の通りです
十進数のNを入力して、R進数の数に変換します.Rが10より大きい場合は、16進数(例えば10はAで表します.)を参照します.
この問題は私達のデータ構造課の実験問題でもあります.だから、私は順番スタックを利用して実現しました.もちろん、行列逆順で出力してもいいです.
ACコードは以下の通りです
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define M 10005
typedef int Elemtype;
typedef struct Stack
{
Elemtype data[M];
int top;
}Stack;
struct Stack *Init()
{
struct Stack *s;
s= (struct Stack *)malloc(sizeof(struct Stack ));
if(s!= NULL)
{
s->top = -1;
return s;
}
else exit(0);
}
int main()
{
struct Stack *s;
int r,n,temp;
s = Init();
while(scanf("%d%d",&n,&r)!= EOF)
{
if(n<0)
{
printf("-");
n = (-1)*n;
}
while(n)
{
s->top++;
s->data[s->top] = n%r;
n = n/r;
}
while(s->top != -1)
{
if(s->data[s->top] >= 10 )
{
temp = s->data[s->top]-10+'A';
s->top--;
printf("%c",temp);
}
else
{
temp = s->data[s->top];
s->top--;
printf("%d",temp);
}
}
printf("
");
}
return 0;
}