文章
19
粉丝
69
获赞
30
访问
18.8k
#include <bits/stdc++.h>
using namespace std;
const int maxn = 4000; // 因为输入的10进制不超过1000位,则转换成2进制应该不超过4000位(2^4 = 16)
const int oldBase = 10; // 原始进制
const int newBase = 2; // 新进制
string str; // 因为输入为不超过1000位的10进制数则应该用字符串接收
/*
* 数组的 0 号元素均用于存储数组的长度
*/
int br[maxn] = {0}; // 存储2进制
int dr[maxn] = {0}; // 存储10进制
int drans[maxn] = {0}; // 存储10进制转2进制的过程中的商,并且存储将 2 进制转换到 10 进制的过程中 的2^n
int drres[maxn] = {0}; // 存储10进制转2进制的过程中的余数
// 将字符串str存到dr int数组中,dr[0]记录10进制数组长度
void change()
{
memset(dr, 0, sizeof(dr)); // 使用0初始化dr数组
dr[0] = 0; // 使用 dr[0] 存储数组长度
for(int i = 1; i <= str.length(); ++i)
{
dr[++dr[0]] = str[i-1]-'0';
}
}
// 将 10 进制转换成 2 进制
void solve()
{
memset(drres, 0, sizeof(drres)); // 使用0初始化drres函数
int y, i, j, k;
// 模 n 取余法,(总体规律是先余为低位,后余为高位)
while(dr[0] >= 1)
{
// 只要被除数仍然 >= 1,则继续操作
y = 0;
i = 1;
drans[0] = dr[0]; // 商的长度与被除...
登录后发布评论
暂无评论,来抢沙发