题目描述
将十进制整数n转换成k进制数。
输入格式:
首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据输入两个整数n和k( -1000000 ≤ n ≤ 1000000,> 2 ≤ k ≤ 9)。
输出格式:
对于每组测试,先输出n, 然后输出一个空格,最后输出对应的k进制数。
输入样例:
2
123 8
-12 2
输出样例:
123 173
-12 -1100
解题代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
int n,k,num,m;
list<int> link;
while(T--){
cin>>n>>k;
m=fabs(n);
while(m){
num=m%k;
link.push_front(num);
m/=k;
}
cout<<n<<" ";
list<int>::iterator iter;
if(n<0)cout<<"-";
else if(n==0) cout<<0;
for(iter=link.begin();iter!=link.end();iter++){
cout<<(*iter);
}
cout<<endl;
link.clear();
}
}
解题思路
这道题不难,注意一下负数的情况和输入为0的情况就可以了,因为k的范围在10以为,所以不用考虑十以上的进制,每次求余后的数放在list表的第一位,因为求余后最终都是要倒过来的,我懒得倒过来输出就直接放在了list的前面。