九度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. ...
随机推荐
- python git log
# -*- coding: utf-8 -*- # created by vince67 Feb.2014 # nuovince@gmail.com import re import os imp ...
- leetcode题解:Construct Binary Tree from Inorder and Postorder Traversal(根据中序和后序遍历构造二叉树)
题目: Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume ...
- 【转】javascript 的类,原型,继承的理解
原文: https://www.cnblogs.com/codernie/p/9098184.html ------------------------------------------------ ...
- Assets 读取assets中的文件
res/raw和assets的相同点: 1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. res/raw和assets的不同点:1.res/raw中的文件会被映射到R.j ...
- redis配置不当可导致服务器被控制
服务器配置不当包括三个部分:1.Redis服务使用ROOT账号启动2.Redis服务无密码认证或者使用的是弱口令进行认证3.服务器开放了SSH服务,而且允许使用密钥登录 简单的写下过程 测试环境vic ...
- python raise assert
class MyException(Exception): def __init__(self,error_msg): self.error_msg=error_msg def __str__(sel ...
- Sencha Test Futures API 探秘
原文链接:http://blog.csdn.net/lovelyelfpop/article/details/52301249 英文原文:<Inside the Sencha Test Futu ...
- bootstrap之PressKeyCode&&LongPressKeyCode
PressKeyCode package io.appium.android.bootstrap.handler; import com.android.uiautomator.core.UiDevi ...
- git个人使用总结(命令版)
一.基础命令 快照类操作:add.status.diff.commit.reset.rm.mv 分支类基本操作:branch.checkout.log.stash 分享及更新项目基本操作:pull.p ...
- slam command tool
cd imu_ws source devel/setup.bash ls -l /dev |grep ttyUSB sudo chmod /dev/ttyUSB0 rosrun imu_pb imu ...