九度OJ 1208:10进制 VS 2进制 (进制转换)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:2040
解决:612
- 题目描述:
-
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。
例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
- 输入:
-
一个1000位(即10^999)以内的十进制数。
- 输出:
-
输入的十进制数的二进制逆序数。
- 样例输入:
-
173
- 样例输出:
-
181
思路:
进制转换思路简单,但特别容易出错, 要多练。
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char a[1001];
int t[1000];
int bin[4000];
int lent,lenb;
int i,j,k;
int flag;
int temp;
while( ~scanf( "%s",a ) ) {
lent = strlen(a);
for( i = 0;i < lent;i++ ) {
if( a[i] >= '0' && a[i] <= '9' )
t[i] = a[i] - '0';
else {
printf( "wrong input!");
return 1;
}
}
k = 0;
j = 0;
while( k < lent || t[lent-1] != 0 ) {
flag = 0;
for( i = k;i < lent;i++ ) {
temp = flag;
flag = t[i] % 2; // be careful don't need add flag,but not can't
t[i] = ( t[i] + 10 * temp ) / 2;
}
if( t[k] == 0 )
k++;
if( flag )
bin[j] = 1;
else
bin[j] = 0;
j++;
}
for( i = 0;i < 1000;i++ )
t[i] = 0;
lent = 1;
for( i = 0;i < j;i++ ) {
flag = 0;
for( k = 0;k < lent;k++ ) {
temp = t[k];
t[k] = ( t[k] * 2 + flag ) % 10;
flag = ( temp * 2 + flag ) / 10;
}
if( flag )
t[lent++] = 1;
if( bin[i] )
t[0]++;
}
for( i = lent - 1;i >= 0;i-- )
printf( "%d",t[i] );
printf( "\n" );
}
return 0;
}
/**************************************************************
Problem: 1208
User: liangrx06
Language: C
Result: Accepted
Time:20 ms
Memory:912 kb
****************************************************************/
九度OJ 1208:10进制 VS 2进制 (进制转换)的更多相关文章
- 九度OJ 1026:又一版 A+B (进制转换)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:11412 解决:3086 题目描述: 输入两个不超过整型定义的非负10进制整数A和B(<=231-1),输出A+B的m (1 < ...
- 【九度OJ】题目1208:10进制 VS 2进制 解题报告
[九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...
- 【九度OJ】题目1138:进制转换 解题报告
[九度OJ]题目1138:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1138 题目描述: 将一个长度最多为30 ...
- 【九度OJ】题目1080:进制转换 解题报告
[九度OJ]题目1080:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1080 题目描述: 将M进制的数X转换为 ...
- 【九度OJ】题目1026:又一版 A+B 解题报告
[九度OJ]题目1026:又一版 A+B 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1026 题目描述: 输入两个不超过 ...
- 【九度OJ】题目1194:八进制 解题报告
[九度OJ]题目1194:八进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1194 题目描述: 输入一个整数,将其转换 ...
- 【九度OJ】题目1118:数制转换 解题报告
[九度OJ]题目1118:数制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1118 题目描述: 求任意两个不同进制非 ...
- 【九度OJ】题目1475:IP数据包解析 解题报告
[九度OJ]题目1475:IP数据包解析 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1475 题目描述: 我们都学习过计算机网络, ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
随机推荐
- Spark-Join优化之Broadcast
适用场景 进行join中至少有一个RDD的数据量比较少(比如几百M,或者1-2G) 因为,每个Executor的内存中,都会驻留一份广播变量的全量数据 Broadcast与map进行join代码示例 ...
- 怎样允许其他电脑连接本机MySQL
2017-04-20 1.***\bin\>MySQL -h localhost -u root -p 这样应该可以进入MySQL服务器 执行代码如下: MySQL>use mysql ...
- SELinux的Docker安全性
原文译自:http://opensource.com/business/14/7/docker-security-selinux 这篇文章基于我今年在DockerCon一个讲座,它将讨论我们当前听到的 ...
- 数组练习:各种数组方法的使用&&事件练习:封装兼容性添加、删除事件的函数&&星级评分系统
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- HDU4674 Trip Advisor
Problem Description There is a strange country somewhere which its transportation network was built ...
- wps文档忘记保存关闭了怎么恢复
wps文档忘记保存关闭了怎么恢复 点击程序左上角的''WPS文字/表格/演示''选择备份管理,根据需要尝试右侧下面的"查看其他备份"功能就能找了. 点击"开始-运行&qu ...
- LeetCode题目: Remove Duplicate Letters
问题描述 给一个字符串(只包含小写字母),删除重复的字母, 使得每个字母只出现一次.返回的结果必须是字典顺序最小的. 举例:“bcabc" -> "abc", &q ...
- mybatis 遇到的问题
顺序问题:在resultmap中,result必须在association之前.否则会报错 只查出一条记录的问题 :重名的id,要起别名.而且不能忽略. mybaits错误解决:There is n ...
- 定制一个类似地址选择器的view
代码地址如下:http://www.demodashi.com/demo/12832.html 前言: 这几天也是闲来无事,看看有什么和Scroller相关的控件需要巩固下,原因很简单,前几天看到相关 ...
- 隐藏ion-nav-back-button的文字
<ion-nav-bar class="bar-positive"> <ion-nav-back-button> </ion-nav-back-but ...