九度oj 题目1208:10进制 VS 2进制
- 题目描述:
-
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。
例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
- 输入:
-
一个1000位(即10^999)以内的十进制数。
- 输出:
-
输入的十进制数的二进制逆序数。
- 样例输入:
-
173
- 样例输出:
-
181 初看此题,本以为是一道水题。但仔细一看是1000位的整数,难度瞬间提高了好几个档次。
没办法,用处理长整数的办法解题吧!#include <cstdio>
#include <cstdlib>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#define MAX 1009
#define inf 1000000009
#define BASE 4
char temp[MAX];
int src[];
int des[];
int tmp[]; int div(int toD[], int len) {
if(len == ) {
toD[] = toD[]/;
return len;
} int ci = toD[len-];
int j = ;
for(int i = len-; i >= ; i--) {
int q = ci * + toD[i];
int p = q/;
ci = q%;
tmp[j] = p;
j++;
}
int t = ;
for(int v = j-; v >= ; v--) {
toD[t++] = tmp[v];
} int p = tmp[] / ;
int q = tmp[] % ;
toD[t++] = q;
if(p != ) {
toD[t++] = p;
} return t;
} int mul2(int toM[], int len) {
int ci = ;
for(int i = ; i < len; i++) {
int p = toM[i] * + ci;
int q = p % ;
ci = p/;
toM[i] = q;
}
if(ci != ) {
toM[len] = ci;
len++;
} return len;
} int inc(int toM[], int len) {
int ci = ;
for(int i = ; i < len; i++) {
int p = toM[i] + + ci;
int q = p % ;
ci = p/;
toM[i] = q;
if(ci == ) {
return len;
}
}
toM[len] = ci;
len++;
return len;
} int main(int argc, char const *argv[])
{ //freopen("input.txt","r",stdin);
while(scanf("%s",temp) != EOF) {
int k = ;
memset(src, , sizeof(src));
int i = strlen(temp)-;
for(;i > BASE-; i = i-BASE) {
for(int j = i - BASE+; j <= i; j++) {
src[k] = * src[k] + (temp[j] - '');
}
k++;
}
for(int j = ; j <= i; j++) {
src[k] = * src[k] + (temp[j] - '');
}
k++;
/*for(int i = k-1; i >= 0; i--) {
printf("%04d",src[i]);
}
printf("\n");*/
memset(des, , sizeof(des));
int lend = ;
while(true) {
if((src[]& )== ) {
//des = des * 2;
lend = mul2(des, lend);
//printf("0");
}
else {
//des = des * 2 + 1;
lend = mul2(des, lend);
lend = inc(des,lend);
//printf("1");
} k = div(src, k); /*for(int i = k-1; i >= 0; i--) {
printf("%04d",src[i]);
}
printf("\n");*/ if(k == && src[] == ) {
break;
}
}
//printf("\n");
printf("%d",des[lend-]);
for(int i = lend-; i >= ; i--) {
printf("%04d",des[i]);
}
printf("\n");
}
return ;
}代码先将输入的字符串转化为4个一单位的整数数组,之后模拟了整数的除法和乘2操作以及加1操作。
代码提交了两次才通过。原因是第一次在处理除法时偷懒,使最高位可以大于4位,导致错误
九度oj 题目1208:10进制 VS 2进制的更多相关文章
- 九度OJ题目1208:10进制 VS 2进制 (JAVA)
题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数. 例如对于十进制数173,它的二进制形式为10101101,逆序排列得到1 ...
- hdu 1284 关于钱币兑换的一系列问题 九度oj 题目1408:吃豆机器人
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj 题目1007:奥运排序问题
九度oj 题目1007:奥运排序问题 恢复 题目描述: 按要求,给国家进行排名. 输入: 有多组数据. 第一行给出国家数N,要求排名的国家数M,国家号 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 九度oj 题目1087:约数的个数
题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...
- 九度OJ题目1105:字符串的反码
tips:scanf,cin输入字符串遇到空格就停止,所以想输入一行字符并保留最后的"\0"还是用gets()函数比较好,九度OJ真操蛋,true?没有这个关键字,还是用1吧,还是 ...
- 九度oj题目1002:Grading
//不是说C语言就是C++的子集么,为毛printf在九度OJ上不能通过编译,abs还不支持参数为整型的abs()重载 //C++比较正确的做法是#include<cmath.h>,cou ...
随机推荐
- 项目经验——jboss 配置数据库连接池
数据库的连接和关闭是非常消耗系统资源的,在多层结构的应用环境中,这种资源消耗又直接的反映到系统性能上来.在项目实际应用中,最常用的解决方案便是建立数据库连接池. 一.数据库连接池基本原理 当程序启动时 ...
- VirtualKD + Windbg 调试Win10虚拟机
安装完vminstall后,先在运行中输入"msconfig"命令,显示如下窗口. 首先点击“引导”选项卡,然后选择最后一个引导项(Disable Signature Enforc ...
- C++遍历文件及文件夹代码
可以遍历目录包含的文件及文件夹 #include <string> #include <vector> #include <io.h> using std::vec ...
- python之道04
1.写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian", "barry&q ...
- ES6新数据类型map与set
一.map,简单的键值对映射,具有很快的查找速度 1. 初始化map,map的键名可以使用其他数据类型,对象的属性名只能使用字符串或symbol 使用二维数组 var m = new Map([['n ...
- 长链剖分优化dp三例题
首先,重链剖分我们有所认识,在dsu on tree和数据结构维护链时我们都用过他的性质. 在这里,我们要介绍一种新的剖分方式,我们求出这个点到子树中的最长链长,这个链长最终从哪个儿子更新而来,那个儿 ...
- UVA-1220-Party at Hali-Bula && UVA-1218-Perfect Service(树形DP)
UVA-1220-Party at Hali-Bula 题意: 一个公司员工要举行聚会,要求任意一个人不能和他的直接上司同时到场,一个员工只有一个支系上司,现在求最多有多少人到场,并且方案是否唯一(紫 ...
- POJ-2251-地下城
这题是一道简单的广搜题目,读入的时候,需要注意,如果是用scanf读入的话,就直接读取每行的字符串,不然的话,行尾的回车,也会被当成字符读入,这样的话,每次读取的数目就会小于我们想要的数目,因为每次把 ...
- 【树形背包】bzoj4033: [HAOI2015]树上染色
仔细思考后会发现和51nod1677 treecnt有异曲同工之妙 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 ...
- 004 html常用标签
html常用标签 1.无语义标签 <div></div> <span></span> 2.常用语义标签 <hn></hn> 标题 ...