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
HINT10101 用10进制表示是 21 , ceil(21/2) = 1110100 用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;
}

转载于:https://www.cnblogs.com/Roni-i/p/8996931.html

华农oj Problem K: 负2进制【有技巧构造/待补】相关推荐

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

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

  2. YTU OJ 2370: 圆周率(Java大数进制转换)

    Description YT大学附小举办背诵圆率 PI 的比赛.谁背的正确的位数越多,谁为胜者.很多小学生背的位数很多,但是往往会有少数位置的数是错误的.为了快速加测出错误的圆周率,将圆周率 PI 小 ...

  3. 学习笔记7-C语言-进制转换、原返补、位运算、函数

    进制转换 为什么要使用二.八进制.十六进制?因为现在的CPU只能识别高低两种电流,因此只能对二进制数据进行运算二进制数据虽然可以直接被cpu识别,但不方便人们书写.记录,所以把二进制数据转换成八进制是 ...

  4. 华农OJ上不熟悉的题目

    1.打印菱形 法一:分成两部分打印,上端打印完成即打印下端 描述 由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案. 输出格式 菱形右边不留多余空格 输入样例 2 输出样例 * ...

  5. 进制转换(十进制n转化为k进制)

    一.十进制n转化为k进制 将十进制整数n(−231≤n≤231−1)转换成k(2≤k≤16)进制数.注意,10~15分别用字母A.B.C.D.E.F表示. 输入格式: 首先输入一个正整数T,表示测试数 ...

  6. HDU1877 又一版 A+B【进制】

    又一版 A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  7. pat 乙级 1022 D进制的A+B(C++)

    题目 输入两个非负 10 进制整数 A 和 B (≤2​30 −1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个整数 A.B 和 D. 输出格式: ...

  8. 19章 位运算与进制转换

    1.进制转换 1.1整数进制转换 例:10进制转16进制 (114514)10=(BF52)16 方法:除16取余法 1.2整数进制转换例题 方法1: #include <stdio.h> ...

  9. java 短除法转二进制,c语言进制

    我们知道十进制转换成R进制用短除法,但是为什么用短除法呢?请往下看. "数制"只是一套符号系统来表示指称"量"的多少.我们用"1"这个符号来 ...

最新文章

  1. 【MATLAB统计分析与应用100例】案例005:matlab调用medfilt1函数对加噪正弦波信号进行平滑处理
  2. webstorm 注册码,亲测可用
  3. Pycharm TensorFolw配置
  4. PLSQL_PLSQL读和写XML文件方式(案例)
  5. J2EE技术-Spring轻量级框架
  6. vue中使用使用阿里云的iconfont
  7. 电商后台权限设置有哪些规范你知道吗?
  8. WGS84坐标系、Web墨卡托、GCJ02坐标系、BD09坐标系—常用坐标系简述
  9. Ragel——基于有限状态机用于产生源码的编译器
  10. python实验原理_python实验报告5
  11. 前端灰度发布 你知多少?
  12. Q绑查询HTML源码
  13. 管理科学与运筹学(MS/OR)国际期刊最新权威排名
  14. Ubuntu安装wordpress教程
  15. 轻松上手,设计无忧,三款在线图片编辑器必不可少
  16. R语言用quantstrat包获取股票、债券、基金、黄金、原油、指数、外汇和全球经济数据
  17. 暴力递归到动态规划 05 (贴纸拼词)
  18. HTML5+CSS3小实例:3D旋转木马相册
  19. 2022年PMP考试题型都有什么?
  20. spark运行在windows环境的idea遇到的问题记录

热门文章

  1. python游戏编程入门txt-Python真好玩:教孩子学编程 PDF 完整原版
  2. python项目开发实战-给缺少Python项目实战经验的人
  3. python 命令-python 处理命令行参数
  4. python 编程入门-Python编程入门电子书教程,看这几个就够了
  5. python 用途-python中的*和**的用途
  6. python小游戏代码大全-Python编写的点灯小游戏代码
  7. java和python哪个好就业2020-Java和Python哪个发展前景好?老男孩教育
  8. 使用git clone的时候报错:Received HTTP code 503 from proxy after CONNECT
  9. 题目1204:农夫、羊、菜和狼的故事
  10. rest-framework:权限组件