Problem K: 负2进制
Time Limit: 2 Sec Memory Limit: 128 MB
Submit: 51 Solved: 6
[Submit][Status][Web Board]
Description
如果我16岁,我可以悄悄的说我好喜欢你;如果我26岁,我可以大声告诉你我很爱你;可惜我6岁,我什么都给不了你,我还要上小学。 我们都知道2进制,每一位的权值如下: 1 2 4 8 16 32 64 现在我们定义一种-2进制,每一位的权值如下: 1 -2 4 -8 16 -32 64 现在我们给一个正数x,用-2进制表示,输出ceil(x/2),用-2进制表示。 什么是ceil(x)? ceil(x)就是对x向上取整。 什么是对x向上取整 ? 向上取整就是取≥x的最小整数 什么是≥ ? 就是不小于 什么是不小于? 呵呵 Input
第一行为T代表有T组样例.(T<=20) 接下来有T行,每一行有一个用-2进制表示的正数(保证是正数且位数不超过5*10^5) Output
对于每组测试输出一行,每行代表一个用-2进制表示的ceil(x/2).(注意不含前导0) Sample Input
2
10101
10100
Sample Output
11111
11110
HINT 10101 用10进制表示是 21 , ceil(21/2) = 11 10100 用10进制表示是 20 , ceil(20/2) = 10 注意不要输出前导0
[Submit][Status]

OJ地址

10 -> 11,  002 -> 110, 12 -> 00
第一条是 ceil(x/2) 的变化,后面两条是为了消除 2
---
推出结论,除以2相当于把原来二进制数的每一位变成这一位与后一位都加上1,而第0位不变即可,于是得到新的二进制数,可能存在一些位为2,而这些位可与前面的一位消去,消去后就是答案
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const double eps = 1e-7;
const int maxn = 5e5 + 5;
const double pi = acos(-1.0);
char a[maxn];
int b[maxn];
int main(int argc, char const *argv[]) {
int t;
std::cin >> t;
while(t--)
{
memset(b,0,sizeof(b));
scanf("%s", &a);
int len = strlen(a);
for(int i = 0; i < len - 1; i++) {
if(a[i] =='1') {
b[i]++;
b[i+1]++;
}
}
if(a[len-1]=='1') {
b[len-1]++;
}
for(int i = len - 1; i >= 0; --i) {
if(b[i] >= 2) {
if(b[i-1] >= 1) {
b[i-1]--;
b[i] -= 2;
}
else{
b[i-1]++;
b[i-2]++;
}
}
}
int k = 0;
while (b[k]==0) {
k++;
}
while(k < len) {
std::cout << b[k];
k++;
}
std::cout << '\n';
}
return 0;
}

华农oj Problem K: 负2进制【有技巧构造/待补】的更多相关文章

  1. 华农oj Problem L: CreatorX背英语【STL】

    Problem L: CreatorX背英语 Time Limit: 1 Sec Memory Limit: 64 MB Submit: 53 Solved: 36 [Submit][Status][ ...

  2. 华农oj Problem J: 幻化【贪心/抽屉原理】

    Problem J: 幻化 Time Limit: 2 Sec Memory Limit: 128 MB Submit: 18 Solved: 3 [Submit][Status][Web Board ...

  3. 华农oj Problem B: Averyboy找密码【STL】

    Problem B: Averyboy找密码 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 83 Solved: 29 [Submit][Status] ...

  4. 华农oj 2192: hzk又在打人【CRT合并/待补】

    2192: hzk又在打人 Time Limit: 12 Sec Memory Limit: 512 MB Submit: 52 Solved: 1 [Submit][Status][Web Boar ...

  5. 【九度OJ】题目1138:进制转换 解题报告

    [九度OJ]题目1138:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1138 题目描述: 将一个长度最多为30 ...

  6. 【九度OJ】题目1080:进制转换 解题报告

    [九度OJ]题目1080:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1080 题目描述: 将M进制的数X转换为 ...

  7. 九度OJ 1194:八进制 (进制转换)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3521 解决:2058 题目描述: 输入一个整数,将其转换成八进制数输出. 输入: 输入包括一个整数N(0<=N<=100000 ...

  8. 九度OJ题目1208:10进制 VS 2进制 (JAVA)

    题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数.     例如对于十进制数173,它的二进制形式为10101101,逆序排列得到1 ...

  9. 九度oj 题目1208:10进制 VS 2进制

    题目描述: 对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数.    例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10 ...

随机推荐

  1. 从事IT业一个8年老兵转行前的自我总结2——从《易经》说开来

    近些年一直在读<易经>,收获颇多.以前看不贯的人或物现在可以淡然看定,以前看不开的一些事现在也安然放下,以前看不透的某些事现在也都可看透八九不离十. 古人云:不读<易>不可为将 ...

  2. 《Cracking the Coding Interview》——第13章:C和C++——题目9

    2014-04-25 20:37 题目:请设计一个字节对齐的malloc函数,配套上对应的free函数.要求这个函数分配出的内存块儿的首地址是某个值n的整数倍,n是2的整次幂,比如128.1024之类 ...

  3. Pascal小游戏 贪吃蛇

    一段未完成的Pascal贪吃蛇 说这段代码未完成其实是没有源代码格式化,FP中一行最多只有255字符宽. uses crt; const screenwidth=50; screenheight=24 ...

  4. 生成器 yield, next ,send

    重要的yield :相当于一个断层,我们再用next取拿出每一层重要的next :生成器查看装置,查看每一个断层重要的send :和next一样查看每一个段层,不过在查看第二个断层的时候,就可以对前面 ...

  5. Ubuntu下禁用笔记本自带键盘

    想要禁用笔记本自带键盘(Ubuntu)只要2条命令. 1. 打开终端,输入: xinput list ⎡ Virtual core pointer id=2 [master pointer (3)] ...

  6. php利用PHPExcel类导出导入Excel用法

    PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...

  7. jsp页面提示“Multiple annotations found at this line: - The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path”解决方案

    Multiple annotations found at this line: - The superclass "javax.servlet.http.HttpServlet" ...

  8. poj 3436 网络流构图经典

    ACM Computer Factory Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6012   Accepted: 2 ...

  9. BZOJ3238 [Ahoi2013]差异 【后缀数组 + 单调栈】

    题目链接 BZOJ3238 题解 简单题 经典后缀数组 + 单调栈套路,求所有后缀\(lcp\) #include<iostream> #include<cstdio> #in ...

  10. 公共文件js加载

    头部:例如 <header id="header" class="clearfix"> <a class="col-xs-9&quo ...