输入一个十进制整数n,和一个进制b,输出b进制下的n。
0 <= n <= 10^9
2 <= b <= 16
收起
输入
一行两个整数n,b。
输出
一行一个字符串,表示进制转换后的结果。 特别注意对于超过10进制的11至16进制。 如果一位数字是10 11 12 13 14 15,我们用ABCDEF来代替。
输入样例
267242409 16
输出样例
FEDCBA9
做这个题目的时候,一开始想的是在进制转换的时候(求余)的时候把大于9的数强制类型转换为字符类型在存入字符数组,可是有数字啊,数字放入里边相当于ASCLL 码,所以说需要在输出的时候转换,我提交后发现一直有一组数据没过,奇怪啊,我有尝试把数组放大,还不行,无奈之下只能用什么东西换这组数据,当看见这个数据的庐山真面目的时候,我身躯一震,我去,是0,我没看考虑到0的存在,只考虑了它的右边界,(QAQ),难过ing,如下代码:
#include<bits/stdc++.h>
#include<iostream>
#include<cstring>
#include <algorithm>
using namespace std;
#define ll long long
ll ans[9000000];
int main()
{
ll n,m,k=0,l=0,b;
cin>>n>>m;if(n==0) {cout<<0;return 0;}
while(n)
{
ans[k++]=n%m;
n/=m;
}
for(ll i=k-1;i>=0;i--)
{ if(ans[i]>=10) cout<<char(ans[i]+55);
else cout<<ans[i];
}
}