题解
【入门】10进制转D进制
1 条题解
-
0
#include<bits/stdc++.h> using namespace std; int main() { long long n; int d;// d:目标转换进制(2/8/16) cin >> n >> d; stack<char> s; // s:存放取余得到的字符 if(n == 0) { // 特殊情况:十进制数为0,直接入栈字符'0' s.push('0'); }else{ long long t = n; // t:临时变量,保存当前待计算数值 while(t!=0){ int r = t % d;//除d取余 char c; // c:余数转换后的对应字符 if(r < 10){ c = '0' + r; // 余数0~9直接转为对应数字字符 }else{ c = 'A' + (r - 10); // 余数10~15转为A~F } s.push(c); // 转换后的字符入栈 t /= d; // 更新为整除后的结果,继续循环 } } // 栈后进先出,依次取出栈顶元素输出 while(!s.empty()){ cout << s.top();// 取栈顶字符 s.pop();// 弹出栈顶元素 } return 0; }
- 1