sdut oj1252 數據結構實驗之棧一:進制轉換
題目描述
輸入一個十進制數N,將它轉換成R進制數輸出。
輸入
輸入數據包含多個測試實例,每個測試實例包含兩個整數N(32位整數)和R(2<=R<=16, R<>10)。
輸出
爲每個測試實例輸出轉換後的數,每個輸出佔一行。如果R大於10,則對應的數字規則參考16進制(比如,10用A表示,等等)。
示例輸入
7 2 23 12 -4 3
示例輸出
111 1B -11
#include <bits/stdc++.h>
using namespace std;
stack<int>Q;
void Transform(long n,int m)
{
int k,t;
if(n==0)
{
cout<<"0";
}
if(n<0)
{
cout<<"-";
n=abs(n);
}
while(n)
{
k=n%m; //n對m取餘數,並且餘數進棧,便於以後倒序輸出
Q.push(k);
n=n/m; //直到n爲0爲止
}
while((!Q.empty()))
{
t=Q.top();
Q.pop();
if(t>=10&&t<=15)
{
switch(t)
{
case 10:
cout<<"A";
break;
case 11:
cout<<"B";
break;
case 12:
cout<<"C";
break;
case 13:
cout<<"D";
break;
case 14:
cout<<"E";
break;
case 15:
cout<<"F";
break;
}
}
else cout<<t;
}
}
int main()
{
int n,m;
while(cin>>n>>m)
{
Transform(n,m);
cout<<endl;
}
return 0;
}