1390: 【入门】10进制转D进制(1415)

内存限制:16 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:37 解决:20

题目描述

十进制整数N和其他D(D的值为2、8、16)进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:N = (N div d)×d + N mod d (其中:div 为整除运算,mod 为求余运算)。简单来说,就是除D取余,然后倒过来得到D进制的数。
例如:
(1348)10 = (10101000100)2
(1348)10 = (2504)8
(1000)10 = (3E8)16
(请注意:转16进制时,用A代表余数10,B代表余数11……)
假设现要编制一个满足下列要求的程序:对于输入的任意一个非负十进制整数(n<=1,000,000,000),打印输出与其等值的D进制数。

输入

有两个整数N和D,N表示要转换的十进制非负整数,D代表要转换的进制(2、8或16)

输出

十进制N转D进制的结果

样例输入 复制

1348 2

样例输出 复制

10101000100

提示

#include<bits/stdc++.h>
using namespace std;
int n,d;
stack<char> s;
string t="0123456789ABCDEF";
int main(){
    cin>>n>>d;
    if (n==0) {
    	cout<<0<<endl;
    	return 0;
	}
    while(n!=0) {
    	s.push(t[n%d]);
    	n=n/d;
	}
	while(s.size()!=0) {
		cout<<s.top();
		s.pop();
	}
	return 0;
}