怎么又是进制转换
描述
给你一个10进制整数,你能快速的将其转换为2,8,16进制么?
输入
第一行为一个整数T表示用例数。
接下来T行,每一行包含两个整数n,m。(0<n<1e9, m为2,8,16三个数之一)
输出
输出n的m进制数,对于16进制,A-F为大写。
样例输入
3
10 2
10 8
10 16
10 2
10 8
10 16
样例输出
1010
12
A
12
A
#include<cstdio>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<stack>
#include<list>
using namespace std;
int main()
{
int n,m,k,t;
cin>>k;
while(k--)
{
cin>>n>>m;
if(m==16)
{
char a[17]= {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
stack<char> ss;
while(n)
{
t=(n%m);
ss.push(a[t]);
n=n/m;
}
while(!ss.empty())
{
cout<<ss.top();
ss.pop();
}
cout<<endl;
}
else
{
stack<int> s;
while(n)
{
t=(n%m);
s.push(t);
n=n/m;
}
while(!s.empty())
{
printf("%d",s.top());
s.pop();
}
cout<<endl;
}
}
return 0;
}
利用栈的后进先出的特点,可以很优秀进行进制之间的转换