sdut 1252進変換

2167 ワード

進数変換Time Limit:1000 ms Memory limit:65536 Kに疑問がありますか?ここをクリック^^;タイトル記述10進数Nを入力し、R進数出力に変換します.入力入力データは、2つの整数N(32ビット整数)およびR(2<=R<=16、R<>10)を含む複数の試験例を含む.出力は、テストインスタンスごとに変換された数を出力し、出力ごとに1行を占めます.Rが10より大きい場合、対応する数値規則は16進数(例えば、10はAで表されるなど)を参照する.サンプル入力
7 2 23 12 -4 3
サンプル出力
111 1B -11
#include <bits/stdc++.h>

using namespace std;

void f(int n,int r)
{
    if(n > 0)
    {
        f(n / r, r);
        if(n % r < 10)
            printf("%c",n%r+48);
        else
            printf("%c",n%r+55);
    }

}
int main()
{
    int n,r;
    while(cin>>n>>r)
    {
        if(n == 0)
            cout<<0<<endl;
        else if(n > 0)
        {
            f(n,r);
            cout<<endl;
        }
        else
        {
            cout<<"-";
            f(-n,r);
            cout<<endl;
        }
    }
    return 0;
}