您的位置:首页 > 其它

进制转换

2015-06-16 21:45 211 查看

进制转换


Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^

题目描述

输入一个十进制数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>
#include<stdlib.h>
#include<iostream>

using namespace std;

string  a;
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
int i=0;
if(n==0)      //此题注意n==0时
{printf("0\n");
}
else  if(m<=10)
{  int flag=0;
if(n>=0)
flag=1;
else
n=-n;
while(n)
{
a[i++]=n%m+'0';
n/=m;
}
if(flag==1)
for(int j=i-1;j>=0;j--)
cout <<a[j];
else
{
cout<<"-";
for(int j=i-1;j>=0;j--)
cout <<a[j];
}
cout <<endl;
}

else
{
int flag=0;
if(n>=0)
flag=1;
else
n=-n;
while(n)
{
if(n%m>=10)
a[i++]='A'+n%m-10;
else
a[i++]=n%m+'0';
n/=m;
}

if(flag==1)
for(int j=i-1;j>=0;j--)
cout <<a[j];
else
{
cout<<"-";
for(int j=i-1;j>=0;j--)
cout <<a[j];
}
cout <<endl;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: