SDUT-1252進変換

9818 ワード

しんしんへんかん
タイトルの説明:
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 1B -11
問題:
短除法を用いて,進数変換を得た.スタックを使用して、進数変換を格納します.
ACコード:
#include

using namespace std;
int a[80000000];
char b[7] = {'A','B','C','D','E','F','G'};
int main(){
    long long  n,m;
    while(cin>>n>>m){
        int top = 0;
        int sum = 0;
        if(n == 0){
            cout<<n<<endl;

        }else{
            if(n > 0){
                while(n != 0){
                    sum = n % m;
                    n = n / m;
                    a[top] = sum;
                    top++;
                }

                for(int i = top - 1;i >= 0;i--){
                    if(a[i] > 9){
                        int t = a[i];
                        cout<<b[t-10];
                    }else{
                        cout<<a[i];
                    }
                }
                cout<<endl;
            }else{
                n = n * -1;
                while(n != 0){
                    sum = n % m;
                    n = n / m;
                    a[top] = sum;
                    top++;
                }
                cout<<"-";
                for(int i = top - 1;i >= 0;i--){

                    if(a[i] > 9){
                        int t = a[i];
                        cout<<b[t-10];
                    }else{
                        cout<<a[i];
                    }
                }
                cout<<endl;
            }
        }

    }
    return 0;
}


タイトルリンク:山理工1252