杭電oj符号化2031

1474 ワード

問題の説明:
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
分析:
この問題は10進数から他の進数に変換する方法が必要だ.
1.整数配列記憶を使用し、(10,11,12,1314,15)
2、負数を正数に変換して処理する.
3、逆順出力
コード:
#include
#include
#include
int main()
{
    int N, R;
    while (~scanf("%d %d", &N, &R))
    {
        int num, i = 0, c[100000];
        for (int num = abs(N); num != 0; ++i)// abs , 
        {            
            c[i] = num % R;// 
            num /= R;// , , 
        }
        if (N < 0)// , 
            printf("-");
        for (int j = i - 1; j >= 0; --j)// ‘10’,‘11’,‘12’,‘13’,‘14’,‘15’, 。
        {
            if (c[j] == 10)
                printf("A");
            else if (c[j] == 11)
                printf("B");
            else if (c[j] == 12)
                printf("C");
            else if (c[j] == 13)
                printf("D");
            else if (c[j] == 14)
                printf("E");
            else if (c[j] == 15)
                printf("F");
            else 
                printf("%d", c[j]);
        }
        printf("
"); } return 0; }