[NOIP2000]进制转换
时间: 2023-11-09 19:05:02 浏览: 44
[NOIP2000 提高组]进制转换是一道关于进制转换的题目。通过给定的十进制数和目标进制数,将十进制数转换为目标进制数并输出。具体的解题思路如下:
1. 首先,我们需要定义一个字符数组a来存储转换后的结果。
2. 然后,通过循环将给定的十进制数不断除以目标进制数,并将余数转换成对应的字符存入数组a中。直到十进制数变为0为止。
3. 当余数小于10时,直接将其转换为对应的字符;当余数大于等于10时,将其减去10后转换为对应的大写字母。
4. 最后,逆序输出字符数组a的元素,即为所求的目标进制数表示的结果。
代码示例:
```
#include <iostream>
using namespace std;
int main(){
int n, m;
char a[100001];
int l = 0;
cin >> n >> m;
cout << n << "=";
while(n != 0){
int j = n % m;
n /= m; // 十进制转n进制
if(j < 0) j -= m, n++; // 处理负数的情况
if(j < 10) a[l] = (char)(j + '0');
else a[l] = (char)((j - 10) + 'A');
l++;
}
for(int i = l - 1; i >= 0; i--)
cout << a[i]; // 倒序输出
cout << "(base" << m << ")" << endl;
return 0;
}
```