HDU 2031進数変換(進数変換)
2279 ワード
Descriptionは10進数Nを入力し、それをR進数出力に変換するInput入力データには複数のテストインスタンスが含まれ、各テストインスタンスには2つの整数N(32ビット整数)とR(2<=R<=16,R<>10)Outputが含まれ、各テストインスタンスには変換後の数が出力され、各出力は1行を占める.Rが10より大きい場合、対応するデジタルルールは16進数(例えば、10はAで表すなど)Sample Input 7 2 23 12-4 3 Sample Output 111 1 B-11 Solution進数変換を参照し、N%Rをスタックに押し込むたびに、N%R進数を分割してスタックの上の要素から、10より小さい場合は直接出力し、10より大きい場合はアルファベット出力(+55)Codeに変換する
#include<cstdio>
#include<cstring>
#include<iostream>
#include<stack>
using namespace std;
int main()
{
int n,r;
while(scanf("%d%d",&n,&r)!=EOF)
{
if(n<0)
printf("-"),n=-n;
stack<int> s;
while(n)
{
int temp=n%r;
s.push(temp);
n/=r;
}
while(!s.empty())
{
int temp=s.top();
s.pop();
if(temp<10)
printf("%d",temp);
else
printf("%c",temp+55);
}
printf("
");
}
return 0;
}