当前位置: 首页 > news >正文

(算法)大数的进制转换

题目描述

将一个长度最多为30位数字的十进制非负整数转换为二进制数输出输入描述:
多组数据,每行为一个长度不超过30位的十进制非负整数。
(注意是10进制数字的个数可能有30个,而非30bits的整数)

解析

例子 :123,设二进制数组为w[]

  • w[i++]:123//2=?..1

  • ? 作为下一个的除数: 1//2=0…1(余1加10)
    (10+2)//2=6…0(余0加0)
    (0+3)//2=1…1(余1,此处的1就是上一条的1)
    得到?为 ()61

  • 将61填入重复上述过程

代码

#include <stdio.h>
#include <string.h>char s[35];
char buf[205];//结果int main(){int num[35];while(scanf("%s",s)!=EOF){//按位保存int len = strlen(s);for(int i=0;i<len;i++){num[i]=s[i]-'0';}int i=0;int len_str = 0;//一位一位处理while(i<len){int c=0;//从末位判断是1还是0buf[len_str++] = (num[len-1])%2+'0';//更新num数组,存储每次的商,作为下一次的除数for(int j=i;j<len;j++){int temp=num[j];num[j] = (num[j]+c)/2;if(temp%2 == 1){c = 10;}else {c=0;}if(num[i]==0)i++;}}for(int i=len_str-1;i>=0;i--){printf("%c",buf[i]);}printf("\n");}return 0;
}

http://www.mrgr.cn/news/28962.html

相关文章:

  • GetMaterialApp组件的用法
  • docker镜像结构
  • 头部检测系统源码分享
  • 安装WINDOWS微软商店已下架的WSL系统,以UBUNTU 16.04 为例
  • 算法设计与分析(循环赛日程表
  • 并发安全与锁
  • TransmittableThreadLocal简单使用
  • UVA-211 多米诺效应 题解答案代码 算法竞赛入门经典第二版
  • 嵌入式DCMI摄像头功能调试方法
  • ChatGLM-6B部署到本地电脑
  • Chainlit集成Langchain并使用通义千问AI知识库高级检索(多重查询)网页对话应用教程
  • C++:析构函数
  • 全面掌握 Jest:从零开始的测试指南(下篇)
  • Python JSON
  • 分析和管理远程服务器方法
  • Netty笔记09-网络协议设计与解析
  • vue3 表单校验规则封装
  • 【docker学习笔记】docker概念和命令
  • 我的5周年创作纪念日,不忘初心,方得始终。
  • CI/CD持续集成和持续交付(git工具、gitlab代码仓库、jenkins)