首页 > 试题广场 >

进制转化

[编程题]进制转化
  • 热度指数:111 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 128M,其他语言256M
  • 算法知识视频讲解

输入一个基数b和一个正整数n(十进制),输出n的b进制表示。


输入描述:
十进制数n和需要转换的进制数b。


输出描述:
输出n的b进制表示。
示例1

输入

6 2

输出

110
#include <iostream>
(720)#include <stack>
using namespace std;
/**
 * 一个十进制整数转换为二至九进制之间的任意进制数输出
 * @param Ary :要转换的进制
 * @param num :要转换的数
 */
void Dec_To_All( int num,int Ary) {
    int temp = 0;
    stack<int> number_stack;
    if (Ary > 1 && Ary < 10) {
        while (1) {
            temp = num % Ary;                       //进制转换
            number_stack.push(temp);                //压栈
            num = num / Ary;                        //计算剩余数
            if (num == 0)
                break;
        }
        while (!number_stack.empty()) {
            cout << number_stack.top();             //得到栈顶元素
            number_stack.pop();                     //出栈
        }
    }else if(Ary == 10)
        cout << num << endl;
}

int main(){
    int num = 0,ary = 0;
    cin >> num >> ary;
    Dec_To_All(num,ary);
    return 0 ;
}

发表于 2020-03-23 17:36:34 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        long n = Long.parseLong(scanner.next());
        int b = Integer.parseInt(scanner.next());
        if(b>=2&&b<=10&&n<=10000) {
           System.out.println( transform(n, b));
        }
    }

    public static String transform(long num, int destDecimal) {
         if(destDecimal==10){
            return num+"";
        }
        StringBuilder result = new StringBuilder();
        while (num > 0) {
            long a = num % destDecimal;
            result.append(a);
            num /= destDecimal;
        }
        return result.reverse().toString();
    }
}

发表于 2019-11-20 13:06:04 回复(0)
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;

int main()
{
    long long nums,jz;
    cin >> nums >> jz;
    if(nums > 0)
    {
        vector<int> v;
        while(nums)
        {
            v.push_back(nums%jz);
            nums /= jz;
        }
        reverse(v.begin(),v.end());
        auto it = v.begin();
        char a[] = "ABCDEF";
        while(it != v.end())
        {
            if(*it > 9)
                cout << a[*it - 10];
            else
                cout << *it;
            ++it;
        }
        cout << endl;
    }
    else
        cout << 0 << endl;
    return 0;
}

发表于 2020-06-04 22:20:16 回复(0)