进制转换

来源:互联网 发布:软件著作权 无形资产 编辑:程序博客网 时间:2024/06/07 11:11

进制转换

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

题目描述

输入一个十进制数N,将它转换成R进制数输出。

输入

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。

输出

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

示例输入

7 223 12-4 3

示例输出

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

0 0
原创粉丝点击