[codeup] 1943 进制转换
题目描述
将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。
输入
多组数据,每行为一个长度不超过30位的十进制非负整数。(注意是10进制数字的个数可能有30个,而非30bits的整数)
输出
每行输出对应的二进制数。
样例输入
0
1
3
8
样例输出
0
1
11
1000
IDEA
长整数用字符串形式存储,主要解决的问题是字符串如何进行除法和余数。余数不用多说,就是最后一位余2就行。除法则应该按照平时手算除法的顺序进行,比如:
for (i = 0; i < len - 1; i++) {
s[i+1] += (s[i] % 2) * 10;
s[i] /= 2;
}
剩下的就是依照平时的整数进制转换的顺序来即可。
SOLUTION
#include <stdio.h>
#include <string.h>
int main()
{
int i, len, num, sum;
char s[100];
char ans[100];
while (scanf("%s", s) != EOF) {
len = strlen(s);
for (i = 0; i < len; i++)
s[i] -= '0';
num = 0;
memset(ans, 0, sizeof ans);
do {
/* sum of each digit */
sum = 0;
/* % 2 */
ans[num++] = s[len - 1] % 2 + '0';
/* / 2 */
for (i = 0; i < len - 1; i++) {
s[i+1] += (s[i] - ((s[i] >> 1) << 1)) * 10;
s[i] >>= 1;
sum += s[i];
}
s[i] >>= 1;
sum += s[i];
} while (sum != 0);
while (num--)
putchar(ans[num]);
putchar('\n');
}
return 0;
}
[codeup] 1943 进制转换的更多相关文章
- C++笔记(7)——一些模拟题:简单模拟、查找元素、图形输出、日期处理、进制转换、字符串处理
以下内容基本来自<算法笔记>,作者为胡凡,建议直接买书看,我这里只是摘抄部分当笔记,不完整的. 简单模拟 就是一类"题目怎么说你就怎么做"的题目.这类题目不涉及算法,只 ...
- SQL Server 进制转换函数
一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...
- [No000071]C# 进制转换(二进制、十六进制、十进制互转)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- JS中的进制转换以及作用
js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: //10进制转为16进制 ().toString() // =>&q ...
- 结合stack数据结构,实现不同进制转换的算法
#!/usr/bin/env python # -*- coding: utf-8 -*- # learn <<Problem Solving with Algorithms and Da ...
- 进制转换( C++字符数组 )
注: 较为简便的方法是用 整型(int)或浮点型(long.double 注意:该类型不一定能够准确存储数据) 来存放待转换的数值,可直接取余得到每一位数值 较为稳定的方法是用 字符数组储存待转换的数 ...
- JS 进制转换
十进制转换成其他进制 objectname.toString([radix]) objectname 必选项.要得到字符串表示的对象. radix 可选项.指定将数字值转换为字符串时的进制. 例如 ...
- php的进制转换
学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...
- C++ 中数串互转、进制转换的类
/******************************************************************** created: 2014/03/16 22:56 file ...
随机推荐
- redis 任务队列
使用Redis实现任务队列 说到队列很自然就能想到Redis的列表类型,3.4.2节介绍了使用LPUSH和RPOP命令实现队列的概念.如果要实现任务队列,只需要让生产者将任务使用LPUSH命令加入到某 ...
- jQuery截取字符串、日期字符串转Date、获取html中的纯文本
jQuery截取字符串.日期字符串转Date.获取html中的纯文本. var com = com || {}; (function ($, com) { /* * 截取字符串 * @param st ...
- 理解go语言 协程之间的通讯
go已经越来越被重视了,特别适合大型互联网公司基础服务的编写,高效,高并发,可以同时允许多个明星出轨,多个明星结婚 都不在话下,下面介绍下GO协程通讯的过程 直接上代码 package main im ...
- C# winform 去掉button的边框颜色
Winform的话,设置FlatStyle为Flat,并且设置FlatAppearance下的BorderSize为0,foreColor设置成web下的Transparent
- docker rpm 下载地址
http://yum.dockerproject.org/repo/main/centos/7/Packages/
- ovs 下流表port 1进入,port 1出去
问题:ovs流量从in_port=1进入,然后从output:1出去,就是说,流量从哪个端口进来,然后从哪个端口出去 流表: ovs-ofctl add-flow br-int in_port=10, ...
- openstack 实用命令
port 1.创建port(create) i.随机ip openstack port create --network public --fixed-ip subnet=sub-public '' ...
- Cordova - 彻底搞定安卓中的微信支付插件!
Cordova:8.0.0 Android studio:3.2.1 cordova-plugin-adam-wechat : 3.0.6 你看到这个标题肯定会惊讶,一个Cordova的微信支付插件, ...
- docker registry 私有仓库 安装配置、查询、删除
#++++++++++++++++++++++++++++++ #docker-registry 私有仓库 #搜索,下载register镜像 docker search registry docker ...
- 深度认识 Sharding-JDBC:做最轻量级的数据库中间层
转自: https://juejin.im/entry/5905ac37a22b9d0065e1199c 基于关系型数据库的水平扩展方案有很多开源的解决方案,但成熟稳定的产品凤毛麟角.当当自研的数据库 ...