1 条题解
-
0
题意分析
给定一个十进制整数 (),要求将其转换为基数为 的表示形式。基数为 的数字系统位值如下(从右到左):
即第 位的权值为 。
解题思路
要将十进制数 转换为基数为 的表示,可以采用短除法,但需要注意以下几点:
- 余数必须为 或 (因为二进制表示只含 和 )。
- 基数 导致除法规则不同:
- 当 除以 时,商和余数的计算方式需要调整:
- 如果 是偶数,直接计算 ,余数为 。
- 如果 是奇数,余数必须为 ,因此商计算为 。
- 当 除以 时,商和余数的计算方式需要调整:
- 重复直到商为 ,然后将余数倒序排列即可得到结果。
标程
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; if (n == 0) { cout << "0\n"; return 0; } vector<int> digits; int tmp; while (n != 0) { tmp = n % 2; if (n < 0) tmp = -tmp; digits.push_back(tmp); n = (n - tmp) / (-2); } for (int i = digits.size() - 1; i >= 0; --i) { cout << digits[i]; } cout << '\n'; return 0; }
- 1
信息
- ID
- 2192
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 1
- 上传者