用C++写给你一个很大的十进制正整数 n,请你输出 n 转换成二进制的结果。记 l 为 n 十进制的位数。 对于 100% 的数据,保证 1≤l≤100。
时间: 2024-02-03 18:12:43 浏览: 36
好的,这题可以用 C++ 的 string 类型来存储大整数,然后用短除法求二进制数。以下是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string n;
cin >> n; // 读入大整数
string binary = ""; // 存储二进制数
while (n != "0") { // 短除法求二进制数
int remainder = 0;
for (int i = 0; i < n.size(); i++) {
int digit = n[i] - '0';
int dividend = remainder * 10 + digit;
n[i] = dividend / 2 + '0';
remainder = dividend % 2;
}
binary = to_string(remainder) + binary;
if (n[0] == '0') n.erase(n.begin()); // 去掉前导零
}
cout << binary << endl; // 输出二进制数
return 0;
}
```
需要注意的是,由于题目中保证 $1 \le l \le 100$,因此我们不需要使用高精度算法,直接用 string 类型存储即可。