进制转换

作者在 2013-10-28 16:39:59 发布以下内容
Problem Description 

将十进制整数n转换成k进制数。( -1000000 <= n <= 1000000, 2 <= k <= 9 )

Input

输入数据的第一行为一个正整数T, 表示测试数据的组数. 然后是T组测试数据. 每组测试数据包括整数n和k。 

Output

对于每个n,先输出n, 然后输出一个空格,最后输出对应的k进制数。

Sample Input
5
5 3
123 8
0 5
-12 2
1 2
Sample Output
5 12
123 173
0 0
-12 -1100
1 1



#include<iostream>
using namespace std;
int main()
{
 int t;cin>>t;
 for(int i=0;i<t;i++)
 {
 
 int n,k,cnt=0,a[100];cin>>n>>k;int m=n;//把n的值放在m中,因为后来会对n进行多次处理,最后输出的是n=0,这与例子不符
 if(n==0) cout<<n<<" "<<"0";
 else 
 {
 bool flag=false;
 if(n<0)
 {
 flag=true;
 n=-n;
 }
 while(n>0)
 {
 a[cnt++]=n%k;n/=k;
 }
 if(flag==true)cout<<m<<" "<<"-";
 else cout<<m<<" ";
 for(int j=cnt-1;j>=0;j--)
 {
 cout<<a[j];
 }
 }
 cout<<endl;
 
 }
 return 0;
}
本题是根据除k取余法来结局问题的


				
默认分类 | 阅读 1522 次
文章评论,共0条
游客请输入验证码
浏览18799次
文章分类
最新评论