码迷,mamicode.com
首页 > 其他好文 > 详细

进制转换

时间:2015-06-17 09:42:35      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

进制转换

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;
         }
    }
}
 



进制转换

标签:

原文地址:http://blog.csdn.net/became_a_wolf/article/details/46523865

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!