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; }