1 进制转换

题目描述

某R大一的时候参加过计算机导论的考试,他对自己的进制转换掌握非常有信心,参加考试后拿到了100分。

就在刚才,Miku找他来解决很多进制问题,可过了一年后,现在的某R已经忘记了如何进行进制转换了。为了不让Miku失望,所以他请你来帮他完成将任意十进制数n,转换为t进制的问题。

输入格式

第一行:一个整数x,代表这一组测试的数据个数。

接下来x行:每一行包含两个整数n和t,代表将要进行转换的十进制数n和要转换成t进制。

(0<=n<=1000000000000000,0<t<36,0<x<20)

输出格式

共有x行,n转换为t进制后的形态。

样例输入

5
10 2
10 10
35 11
184 16
72 36

样例输出

1010
10
32
B8
20

题目分析

十进制转换为其他进制,将输入数据不断除以进制数,直到商为0为止;可以将每步得到的余数放入一个数组中,将其逆向输出,得到转换后的数据。

注意:1.当余数大于9时,输出时要用字母表示。例如A表示10,Z表示35。

           2.放入余数的数组应当先初始化为一个不可能的数,例如转换为16进制时,应将数组初始化为16。

代码:

#include <iostream>
#define N 10000
using namespace std;
void trans(int x,int y)
{ int a[N],i;
  for(int k=0;k<10000;k++)
    a[k]=y;//初始化一个不可能的数,例如16进制初始化为16
  for(i=0;x!=0;i++)
  { a[i]=x%y;
    x/=y;
  }
  for(int j=i-1;j>=0;j--)
  if(a[j]!=y) {if(a[j]<=9) cout<<a[j];
               else cout<<(char)(a[j]-10+'A');}//将大于9的数字换为字母表示
}
int main()
{ int x,i,n[N],t[N];
  cin>>x;
  for(i=0;i<x;i++)
  cin>>n[i]>>t[i];//输入数据
  for(i=0;i<x;i++)
  { trans(n[i],t[i]);//引用函数进行进制转换
    cout<<endl;
  }
  return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值