任意进制转换(细节)

输入一个十进制整数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];
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43408238/article/details/86648969