输入十进制整数N和待转换的进制x(2、8、16),分别代表十进制N转换成二进制、八进制和十六进制,输出对应的结果。十六进制中A~F用大写字母表示。
输入格式:
输入两个整数N(十进制整数N)和x(x进制),中间用空格隔开。
输出格式:
输出对应的结果。
输入样例:
输出样例:
输入样例:
输出样例:
思路
利用辗转相除法进行进制转换,使用stack来存得到的结果,注意转换为16进制时,从10开始为A。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream> #include <stack> using namespace std; int n, x; int main() { cin >> n >> x; stack<int> s; do { s.push(n % x); n /= x; } while (n); while (!s.empty()) { if (s.top() >= 0 && s.top() < 10) { cout << s.top(); } else { cout << (char)(s.top() - 10 + 'A'); } s.pop(); } return 0; }
|